Memleaks and uninitialized memory fixes.
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Fri, 20 Aug 2010 17:06:18 +0000 (17:06 +0000)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Fri, 20 Aug 2010 17:06:18 +0000 (17:06 +0000)
org.glite.lb.client/src/notify.c
org.glite.lb.server/src/il_notification.c
org.glite.lb.server/src/notif_match.c
org.glite.lbjp-common.server-bones/src/srvbones.c

index 0d1856a..7757a99 100644 (file)
@@ -375,9 +375,6 @@ int main(int argc,char **argv)
                        if (tout.tv_sec < 0) tout.tv_sec = 0;
                        tout.tv_usec = 0;
 
-                       edg_wll_FreeStatus(&stat);
-                       stat.state = EDG_WLL_JOB_UNDEF;
-               
                        if ( (err = edg_wll_NotifReceive(ctx, sock, &tout, &stat, &recv_nid)) ) {
                                edg_wll_NotifIdFree(recv_nid);
                                recv_nid = NULL; 
@@ -385,8 +382,10 @@ int main(int argc,char **argv)
                                if (err != ETIMEDOUT) goto receive_err;
                        }
                        else glite_lb_print_stat_fields(fields,&stat);
+                       edg_wll_FreeStatus(&stat);
+                       stat.state = EDG_WLL_JOB_UNDEF;
 
-                       if ((now = time(NULL)) >= client_tout) return 0;
+                       if ((now = time(NULL)) >= client_tout) goto cleanup;
 
                        if (refresh && now >= do_refresh) {
                                valid = now + opt_valid;
@@ -533,13 +532,12 @@ cleanup:
                free(conditions);
        }
        
-       edg_wll_NotifCloseFd(ctx);
-       
        if (edg_wll_Error(ctx,&errt,&errd))
                fprintf(stderr, "%s: %s (%s)\n", me, errt, errd);
 
+       edg_wll_NotifCloseFd(ctx);
        edg_wll_FreeContext(ctx);
+       edg_wll_poolFree();
 
-       
        return 0;
 }
index ff44b33..9aaca27 100644 (file)
@@ -123,7 +123,7 @@ edg_wll_NotifSend(edg_wll_Context       context,
        long                    filepos;
        char               *ulm_data,
                                   *reg_id_s,
-                                  *event_file;
+                                  *event_file = NULL;
 
        if((ret=notif_create_ulm(context, 
                                 reg_id, 
@@ -158,8 +158,9 @@ edg_wll_NotifSend(edg_wll_Context       context,
        ret = 0;
 
 out:
-       if(ulm_data) free(ulm_data);
-       if(reg_id_s) free(reg_id_s);
+       free(event_file);
+       free(ulm_data);
+       free(reg_id_s);
        if(ret) edg_wll_UpdateError(context, ret, "edg_wll_NotifSend()");
        return(ret);
 }
index dd6f1bd..a8fe6fa 100644 (file)
@@ -225,9 +225,9 @@ static int notif_match_conditions(edg_wll_Context ctx,const edg_wll_JobStat *old
  */
 static int notif_check_acl(edg_wll_Context ctx,const edg_wll_JobStat *stat,const char *recip, int *authz_flags)
 {
-       edg_wll_Acl     acl = calloc(1,sizeof *acl);
        int             ret;
        struct _edg_wll_GssPrincipal_data princ;
+       edg_wll_Acl     acl = NULL;
 
        memset(&princ, 0, sizeof(princ));
        *authz_flags = 0;
@@ -240,6 +240,7 @@ static int notif_check_acl(edg_wll_Context ctx,const edg_wll_JobStat *stat,const
                return 1;
 
        if (stat->acl) {
+               acl =  calloc(1,sizeof *acl);
                ret = edg_wll_DecodeACL(stat->acl,&acl->value);
                if (ret) {
                        edg_wll_FreeAcl(acl);
index e73f97d..dd257cd 100644 (file)
@@ -719,6 +719,7 @@ static int do_sendmsg(int to_sock, int sock, unsigned long clnt_dispatched, int
        sendiov.iov_base = sendbuf;
        sendiov.iov_len = sizeof(sendbuf);
 
+       memset(buf, 0, sizeof(buf));
        msg.msg_control = buf;
        msg.msg_controllen = sizeof buf;