Parcourir la source

Fix the lasts leaks. Valgrind is now happy, closes #25

Julien 'Lta' BALLET il y a 10 ans
Parent
commit
3edf294999
3 fichiers modifiés avec 13 ajouts et 9 suppressions
  1. 6 6
      bin/dsm.c
  2. 2 1
      src/smb_spnego.c
  3. 5 2
      src/smb_trans2.c

+ 6 - 6
bin/dsm.c

@@ -95,7 +95,7 @@ int main(int ac, char **av)
   smb_session         *session;
   int                 argoffset;
   char                **share_list;
-  smb_file            *files;
+  smb_file            *files, *fiter;
 
 
   pname     = ((pname = strrchr(av[0], '/')) != NULL) ? pname + 1 : av[0];
@@ -206,12 +206,12 @@ int main(int ac, char **av)
   // smb_fclose(session, fd);
 
   fprintf(stderr, "Let's find files at share's root :\n");
-  files = smb_find(session, test, "\\*");
-  if (files != NULL)
-    while(files)
+  files = fiter = smb_find(session, test, "\\*");
+  if (fiter != NULL)
+    while(fiter)
     {
-      fprintf(stdout, "Found a file %s \n", files->name);
-      files = files->next;
+      fprintf(stdout, "Found a file %s \n", fiter->name);
+      fiter = fiter->next;
     }
   else
     fprintf(stderr, "Unable to list files\n");

+ 2 - 1
src/smb_spnego.c

@@ -192,9 +192,9 @@ static int      challenge(smb_session *s)
 
     res = asn1_read_value(token, "negTokenResp.responseToken", resp_token,
                           &resp_token_size);
+    asn1_delete_structure(&token);
     if (res != ASN1_SUCCESS)
     {
-        asn1_delete_structure(&token);
         asn1_display_error("NegTokenResp read responseToken", res);
         return (0);
     }
@@ -287,6 +287,7 @@ static int      auth(smb_session *s, const char *domain, const char *user,
         BDSM_dbg("Unable to send Session Setup AndX (NTLMSSP_AUTH) message\n");
         return (0);
     }
+    smb_message_destroy(msg);
 
     if (smb_session_recv_msg(s, &resp) == 0)
         return (0);

+ 5 - 2
src/smb_trans2.c

@@ -112,6 +112,7 @@ static smb_message *smb_tr2_recv(smb_session *s)
 
 smb_file  *smb_find(smb_session *s, smb_tid tid, const char *pattern)
 {
+    smb_file              *files;
     smb_message           *msg;
     smb_trans2_req        *tr2;
     smb_tr2_find2         *find;
@@ -172,7 +173,9 @@ smb_file  *smb_find(smb_session *s, smb_tid tid, const char *pattern)
     if ((msg = smb_tr2_recv(s)) == NULL)
         return (NULL);
 
-    return (smb_find_parse(msg));
+    files = smb_find_parse(msg);
+    smb_message_destroy(msg);
+    return (files);
 }
 
 
@@ -247,7 +250,7 @@ smb_file  *smb_fstat(smb_session *s, smb_tid tid, const char *path)
 
     file->name_len  = smb_from_utf16((const char *)info->name, info->name_len,
                                      &file->name);
-    file->name[info->name_len] = 0;
+    file->name[info->name_len / 2] = 0;
 
     file->created     = info->created;
     file->accessed    = info->accessed;