Поддержка старой версии libconfig config_setting_get_string

У меня есть программа на C, которая отлично работала в Debian Box. Меня попросили скомпилировать и запустить его на CentOs 6.5. Все отлично компилируется, кроме той части, где я пытаюсь получить значение из файла конфигурации. Код написан так:

char config_file[150]="file.conf";
config_t cfg;
config_setting_t *ssl_xor_key;
char xkey[256];
ssl_xor_key = config_lookup(&cfg, "ssl.xor.key");
strcpy(xkey,config_setting_get_string(ssl_xor_key));

Файл конфигурации содержит это:

ssl:
{
    xor:
    {
        key="textexttextexttextext";
    };
};

Когда программа прибывает в config_setting_get_string, она падает. Я попытался просто установить строку в команде strcpy, и она работает. Я видел это в / var / log / messages:

kernel: mysql-proxy[9808]: segfault at 8 ip 00007f3ba9d53d12 sp 00007f3baab8a0d8 error 4 in libconfig.so.8.0.0[7f3ba9d51000+a000]

Я видел, что хотя в исходной коробке Debian была библиотека libconfig 1.4.9, самой последней версией CentO является 1.3.2. Я не уверен, поддерживается ли команда в этой версии, так как я не смог найти документацию старой версии.

Я также пытался скомпилировать новейшую версию на Centos Box, но я получаю ошибки в процессе, поэтому я думаю, что это не поддерживается.

Любая идея о том, что может быть решением?

1 ответ

Решение

Похоже, что старая версия libconfig более чувствительна к ошибкам синтаксиса в файлах конфигурации. У меня была затуманивание финала; в файле. Теперь это работает.

Другие вопросы по тегам