旧libconfig版本支持配置设置获取字符串

旧libconfig版本支持配置设置获取字符串,c,linux,libconfig,C,Linux,Libconfig,我有一个C语言的程序,它在debian机器中运行得很好。我被要求在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(

我有一个C语言的程序,它在debian机器中运行得很好。我被要求在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";
    };
};
当程序到达配置设置获取字符串时,程序崩溃。我试着在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 box有libconfig 1.4.9,但CentOs最新的版本是1.3.2。我不确定该命令在该版本中是否受支持,因为我无法找到旧版本的文档

我也曾尝试在Centos Box上编译最新版本,但在编译过程中出现错误,因此我认为它不受支持


知道解决方案是什么吗?

看起来旧版本的libconfig对配置文件中的sintax错误更敏感。我错过了决赛;在档案上。现在它可以工作了。

在盲目地将其用于其他用途之前,可能需要检查
config\u lookup()
的返回值。而且,
cfg
似乎是未初始化使用的,我没有看到任何实际尝试打开配置文件或任何东西的东西,尽管我承认我对特定的API完全不熟悉……谢谢。我要试试你说的话。您会推荐api管理配置文件的任何替代方案吗?