--- libaitcfg/src/parse.c 2008/09/30 15:03:56 1.1.1.1.2.1 +++ libaitcfg/src/parse.c 2009/05/25 07:43:51 1.1.1.1.2.4 @@ -1,3 +1,11 @@ +/************************************************************************* +* (C) 2008 AITNET ltd - Sofia/Bulgaria - +* by Michael Pounov +* +* $Author: misho $ +* $Id: parse.c,v 1.1.1.1.2.4 2009/05/25 07:43:51 misho Exp $ +* +*************************************************************************/ #include "global.h" #include "aitcfg.h" #include "tools.h" @@ -81,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; @@ -93,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; @@ -114,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) { @@ -124,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); } } @@ -156,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;