This email list is read-only. Emails sent to this list will be discarded
----------------------------------
ChangeLog | 6 ++++++
moblin-system-daemon/datetime/datetime.c | 24 ++++++++++++------------
2 files changed, 18 insertions(+), 12 deletions(-)
New commits:
commit 59129c85d7c253daf1b04fb22fcf500c2e7b2d8e
Author: Lilli Szafranski <[EMAIL PROTECTED]>
Date: Thu Aug 14 18:06:49 2008 -0700
Fixed memory problem with get_all_timezones
Diff in this email is a maximum of 400 lines.
diff --git a/ChangeLog b/ChangeLog
index 27ea198..b8ec55d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+moblin-settings (2.15)
+
+ * Fixed memory issue with get_all_timezones
+
+ -- Lilli Szafranski <[EMAIL PROTECTED]> Thu Aug 14 17:59:47 PDT 2008
+
moblin-settings (2.14)
* Fixed bugs in get_all_timezones, set_timezone, and moblin-
diff --git a/moblin-system-daemon/datetime/datetime.c
b/moblin-system-daemon/datetime/datetime.c
index 62c8a41..c2e10fb 100644
--- a/moblin-system-daemon/datetime/datetime.c
+++ b/moblin-system-daemon/datetime/datetime.c
@@ -340,7 +340,7 @@ system_daemon_get_all_timezones(MoblinSystemServer * server,
PRINTF("[system_daemon_get_all_timezones] fseek/ftell
successful:\n\tfile length = %d\n", ((int)fileLen));
//PRINTF("allocating buffer and zones\n");
- buffer = (char*)malloc(sizeof(char) * fileLen);
+ buffer = (char*)malloc(sizeof(char) * (fileLen + 1));
if(!buffer)
{
g_set_error (error, error_quark, STDLIB_MALLOC_ERROR,
@@ -353,12 +353,13 @@ system_daemon_get_all_timezones(MoblinSystemServer *
server,
return FALSE;
}
- memset(buffer, '\0', fileLen);
+ memset(buffer, '\0', fileLen+1);
arrLen = approxLines = fileLen/AVG_LINE_LEN;
+ printf("arrLen = %d\n", arrLen);
- *tz_list = (char**)malloc(sizeof(char*) * approxLines);
- if(!*tz_list)
+ (*tz_list) = (char**)malloc(sizeof(char*) * approxLines);
+ if(!(*tz_list))
{
g_set_error (error, error_quark, STDLIB_MALLOC_ERROR,
"malloc failed");
@@ -373,11 +374,11 @@ system_daemon_get_all_timezones(MoblinSystemServer *
server,
return FALSE;
}
- memset(*tz_list, '\0', approxLines);
+ memset((*tz_list), 0, approxLines);
PRINTF("[system_daemon_get_all_timezones] memory allocations
successful.\n");
- if (fread (buffer, sizeof(char), fileLen, pFile) != fileLen)
+ if (fread(buffer, sizeof(char), fileLen, pFile) != (sizeof(char) *
fileLen))
{
g_set_error (error, error_quark, STDIO_FREAD_ERROR,
strerror(errno));
@@ -395,6 +396,7 @@ system_daemon_get_all_timezones(MoblinSystemServer * server,
return FALSE;
}
+ buffer[fileLen] = '\0';
PRINTF("[system_daemon_get_all_timezones] fread successful:\n\t%ld
bytes read.\n", fileLen);
tok = strtok(buffer, "\n");
@@ -402,12 +404,9 @@ system_daemon_get_all_timezones(MoblinSystemServer *
server,
{
optionsBitMask = 8; // 0b00001000
- //PRINTF("tok = \t\"%s\"\n", tok);
if(tok[0] != '#')
{
- //PRINTF("%s\n", tok);
- orig = origIter = tok;//(char*)malloc(sizeof(char) *
(strlen(tok)+2));
- //strncpy(orig, tok, strlen(tok) + 1);
+ orig = origIter = tok;
copyIter = copy = (char*)malloc(sizeof(char) *
(strlen(tok)+2));
if(!copyIter)
@@ -425,7 +424,7 @@ system_daemon_get_all_timezones(MoblinSystemServer * server,
memset(copyIter, '\0', strlen(tok) + 2);
if(!(options & TZ_ALL))
- {
+ {
while(optionsBitMask > 0)
{
tabIter = strpbrk(origIter, "\t");
@@ -459,7 +458,7 @@ system_daemon_get_all_timezones(MoblinSystemServer * server,
//PRINTF("copy = \t\"%s\"\n", copy);
- if(arrIter > arrLen - 1)
+ if(arrIter > arrLen - 2)
{
arrLen *= 2;
PRINTF("[system_daemon_get_all_timezones]
reallocating tz_list:\n\tarrLen = %d\n", arrLen);
@@ -480,6 +479,7 @@ system_daemon_get_all_timezones(MoblinSystemServer * server,
return FALSE;
}
+ memset((*tz_list + (sizeof(char*) * arrIter)),
0, (arrLen - arrIter));
}
(*tz_list)[arrIter] = copy;
_______________________________________________
Commits mailing list
[email protected]
https://www.moblin.org/mailman/listinfo/commits