--- libaitcfg/src/parse.c 2008/08/28 13:17:41 1.1 +++ libaitcfg/src/parse.c 2009/09/09 09:07:31 1.2 @@ -1,3 +1,11 @@ +/************************************************************************* +* (C) 2008 AITNET ltd - Sofia/Bulgaria - +* by Michael Pounov +* +* $Author: misho $ +* $Id: parse.c,v 1.2 2009/09/09 09:07:31 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)); @@ -77,6 +89,7 @@ int ReadConfig(FILE *f, sl_config * __restrict cfg) LOGERR; return -1; } else { + memset(av, 0, sizeof(struct tagPair)); // added new element av->sle_next = cfg->slh_first; cfg->slh_first = av; @@ -89,7 +102,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 +123,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 +133,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 +165,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;