--- libaitcfg/src/parse.c 2008/08/28 13:17:41 1.1.1.1 +++ libaitcfg/src/parse.c 2008/10/13 17:29:18 1.1.1.1.2.3 @@ -1,3 +1,11 @@ +/************************************************************************* +* (C) 2008 AITNET ltd - Sofia/Bulgaria - +* by Michael Pounov +* +* $Author: misho $ +* $Id: parse.c,v 1.1.1.1.2.3 2008/10/13 17:29:18 misho Exp $ +* +*************************************************************************/ #include "global.h" #include "aitcfg.h" #include "tools.h" @@ -55,7 +63,9 @@ int ReadConfig(FILE *f, sl_config * __restrict cfg) if (*szLine == '[') { pos = strlen((char*) szLine) - 1; if (szLine[pos] != ']') { +#ifdef __DEBUG cfgDbg(stdout, "WARNING:: Ignore section %s ... not closed breket\n", szLine); +#endif } else { szLine[pos] = 0; strncpy((char*) szSection, (char*) szLine + 1, MAX_STR); @@ -69,7 +79,9 @@ int ReadConfig(FILE *f, sl_config * __restrict cfg) // Devide pairs pos = strchr((char*) szLine, '=') ? strchr((char*) szLine, '=') - (char*) szLine : 0; if (!pos) { +#ifdef __DEBUG cfgDbg(stdout, "WARNING:: Ignore a/v %s ... format error!\n", szLine); +#endif continue; } else { av = malloc(sizeof(struct tagPair)); @@ -89,7 +101,7 @@ int ReadConfig(FILE *f, sl_config * __restrict cfg) free(av); return -1; } else - strcpy((char*) av->psSection, (char*) szSection); + strlcpy((char*) av->psSection, (char*) szSection, strlen((char*) szSection) + 1); } else av->psSection = NULL; @@ -110,7 +122,7 @@ int ReadConfig(FILE *f, sl_config * __restrict cfg) free(av); return -1; } else - strcpy((char*) av->psAttribute, (char*) psAttr); + strlcpy((char*) av->psAttribute, (char*) psAttr, strlen((char*) psAttr) + 1); // added value to element av->psValue = malloc(strlen((char*) psVal) + 1); if (!av->psValue) { @@ -120,7 +132,7 @@ int ReadConfig(FILE *f, sl_config * __restrict cfg) free(av); return -1; } else - strcpy((char*) av->psValue, (char*) psVal); + strlcpy((char*) av->psValue, (char*) psVal, strlen((char*) psVal) + 1); } } @@ -152,8 +164,7 @@ int WriteConfig(FILE *f, sl_config * __restrict cfg) for (av = cfg->slh_first; av; av = av->sle_next) { if (av->psSection && strcmp((char*) av->psSection, (char*) szSection)) { - bzero(szSection, MAX_STR + 1); - strcpy((char*) szSection, (char*) av->psSection); + strlcpy((char*) szSection, (char*) av->psSection, MAX_STR + 1); if (!cfgDbg(f, "\n[%s]\n", av->psSection)) { LOGERR; return -1;