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

Reply via email to