aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/cifs/connect.c45
1 files changed, 15 insertions, 30 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 01608bb4d673..c0f98ddea88c 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -2173,8 +2173,7 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2173 if (remaining_words > 0) { 2173 if (remaining_words > 0) {
2174 len = UniStrnlen((wchar_t *)bcc_ptr, 2174 len = UniStrnlen((wchar_t *)bcc_ptr,
2175 remaining_words-1); 2175 remaining_words-1);
2176 if(ses->serverNOS) 2176 kfree(ses->serverNOS);
2177 kfree(ses->serverNOS);
2178 ses->serverNOS = kzalloc(2 * (len + 1),GFP_KERNEL); 2177 ses->serverNOS = kzalloc(2 * (len + 1),GFP_KERNEL);
2179 if(ses->serverNOS == NULL) 2178 if(ses->serverNOS == NULL)
2180 goto sesssetup_nomem; 2179 goto sesssetup_nomem;
@@ -2214,12 +2213,10 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2214 /* if these kcallocs fail not much we 2213 /* if these kcallocs fail not much we
2215 can do, but better to not fail the 2214 can do, but better to not fail the
2216 sesssetup itself */ 2215 sesssetup itself */
2217 if(ses->serverDomain) 2216 kfree(ses->serverDomain);
2218 kfree(ses->serverDomain);
2219 ses->serverDomain = 2217 ses->serverDomain =
2220 kzalloc(2, GFP_KERNEL); 2218 kzalloc(2, GFP_KERNEL);
2221 if(ses->serverNOS) 2219 kfree(ses->serverNOS);
2222 kfree(ses->serverNOS);
2223 ses->serverNOS = 2220 ses->serverNOS =
2224 kzalloc(2, GFP_KERNEL); 2221 kzalloc(2, GFP_KERNEL);
2225 } 2222 }
@@ -2228,8 +2225,7 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2228 if (((long) bcc_ptr + len) - (long) 2225 if (((long) bcc_ptr + len) - (long)
2229 pByteArea(smb_buffer_response) 2226 pByteArea(smb_buffer_response)
2230 <= BCC(smb_buffer_response)) { 2227 <= BCC(smb_buffer_response)) {
2231 if(ses->serverOS) 2228 kfree(ses->serverOS);
2232 kfree(ses->serverOS);
2233 ses->serverOS = kzalloc(len + 1,GFP_KERNEL); 2229 ses->serverOS = kzalloc(len + 1,GFP_KERNEL);
2234 if(ses->serverOS == NULL) 2230 if(ses->serverOS == NULL)
2235 goto sesssetup_nomem; 2231 goto sesssetup_nomem;
@@ -2240,8 +2236,7 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2240 bcc_ptr++; 2236 bcc_ptr++;
2241 2237
2242 len = strnlen(bcc_ptr, 1024); 2238 len = strnlen(bcc_ptr, 1024);
2243 if(ses->serverNOS) 2239 kfree(ses->serverNOS);
2244 kfree(ses->serverNOS);
2245 ses->serverNOS = kzalloc(len + 1,GFP_KERNEL); 2240 ses->serverNOS = kzalloc(len + 1,GFP_KERNEL);
2246 if(ses->serverNOS == NULL) 2241 if(ses->serverNOS == NULL)
2247 goto sesssetup_nomem; 2242 goto sesssetup_nomem;
@@ -2508,8 +2503,7 @@ CIFSNTLMSSPNegotiateSessSetup(unsigned int xid,
2508 bcc_ptr, 2503 bcc_ptr,
2509 remaining_words 2504 remaining_words
2510 - 1); 2505 - 1);
2511 if(ses->serverNOS) 2506 kfree(ses->serverNOS);
2512 kfree(ses->serverNOS);
2513 ses->serverNOS = 2507 ses->serverNOS =
2514 kzalloc(2 * (len + 1), 2508 kzalloc(2 * (len + 1),
2515 GFP_KERNEL); 2509 GFP_KERNEL);
@@ -2527,8 +2521,7 @@ CIFSNTLMSSPNegotiateSessSetup(unsigned int xid,
2527 if (remaining_words > 0) { 2521 if (remaining_words > 0) {
2528 len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words); 2522 len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words);
2529 /* last string is not always null terminated (for e.g. for Windows XP & 2000) */ 2523 /* last string is not always null terminated (for e.g. for Windows XP & 2000) */
2530 if(ses->serverDomain) 2524 kfree(ses->serverDomain);
2531 kfree(ses->serverDomain);
2532 ses->serverDomain = 2525 ses->serverDomain =
2533 kzalloc(2 * 2526 kzalloc(2 *
2534 (len + 2527 (len +
@@ -2547,19 +2540,16 @@ CIFSNTLMSSPNegotiateSessSetup(unsigned int xid,
2547 = 0; 2540 = 0;
2548 } /* else no more room so create dummy domain string */ 2541 } /* else no more room so create dummy domain string */
2549 else { 2542 else {
2550 if(ses->serverDomain) 2543 kfree(ses->serverDomain);
2551 kfree(ses->serverDomain);
2552 ses->serverDomain = 2544 ses->serverDomain =
2553 kzalloc(2, 2545 kzalloc(2,
2554 GFP_KERNEL); 2546 GFP_KERNEL);
2555 } 2547 }
2556 } else { /* no room so create dummy domain and NOS string */ 2548 } else { /* no room so create dummy domain and NOS string */
2557 if(ses->serverDomain); 2549 kfree(ses->serverDomain);
2558 kfree(ses->serverDomain);
2559 ses->serverDomain = 2550 ses->serverDomain =
2560 kzalloc(2, GFP_KERNEL); 2551 kzalloc(2, GFP_KERNEL);
2561 if(ses->serverNOS) 2552 kfree(ses->serverNOS);
2562 kfree(ses->serverNOS);
2563 ses->serverNOS = 2553 ses->serverNOS =
2564 kzalloc(2, GFP_KERNEL); 2554 kzalloc(2, GFP_KERNEL);
2565 } 2555 }
@@ -2581,8 +2571,7 @@ CIFSNTLMSSPNegotiateSessSetup(unsigned int xid,
2581 bcc_ptr++; 2571 bcc_ptr++;
2582 2572
2583 len = strnlen(bcc_ptr, 1024); 2573 len = strnlen(bcc_ptr, 1024);
2584 if(ses->serverNOS) 2574 kfree(ses->serverNOS);
2585 kfree(ses->serverNOS);
2586 ses->serverNOS = 2575 ses->serverNOS =
2587 kzalloc(len + 1, 2576 kzalloc(len + 1,
2588 GFP_KERNEL); 2577 GFP_KERNEL);
@@ -2592,8 +2581,7 @@ CIFSNTLMSSPNegotiateSessSetup(unsigned int xid,
2592 bcc_ptr++; 2581 bcc_ptr++;
2593 2582
2594 len = strnlen(bcc_ptr, 1024); 2583 len = strnlen(bcc_ptr, 1024);
2595 if(ses->serverDomain) 2584 kfree(ses->serverDomain);
2596 kfree(ses->serverDomain);
2597 ses->serverDomain = 2585 ses->serverDomain =
2598 kzalloc(len + 1, 2586 kzalloc(len + 1,
2599 GFP_KERNEL); 2587 GFP_KERNEL);
@@ -2915,8 +2903,7 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2915 bcc_ptr, 2903 bcc_ptr,
2916 remaining_words 2904 remaining_words
2917 - 1); 2905 - 1);
2918 if(ses->serverNOS) 2906 kfree(ses->serverNOS);
2919 kfree(ses->serverNOS);
2920 ses->serverNOS = 2907 ses->serverNOS =
2921 kzalloc(2 * (len + 1), 2908 kzalloc(2 * (len + 1),
2922 GFP_KERNEL); 2909 GFP_KERNEL);
@@ -2969,8 +2956,7 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2969 if(ses->serverDomain) 2956 if(ses->serverDomain)
2970 kfree(ses->serverDomain); 2957 kfree(ses->serverDomain);
2971 ses->serverDomain = kzalloc(2, GFP_KERNEL); 2958 ses->serverDomain = kzalloc(2, GFP_KERNEL);
2972 if(ses->serverNOS) 2959 kfree(ses->serverNOS);
2973 kfree(ses->serverNOS);
2974 ses->serverNOS = kzalloc(2, GFP_KERNEL); 2960 ses->serverNOS = kzalloc(2, GFP_KERNEL);
2975 } 2961 }
2976 } else { /* ASCII */ 2962 } else { /* ASCII */
@@ -2988,8 +2974,7 @@ CIFSNTLMSSPAuthSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2988 bcc_ptr++; 2974 bcc_ptr++;
2989 2975
2990 len = strnlen(bcc_ptr, 1024); 2976 len = strnlen(bcc_ptr, 1024);
2991 if(ses->serverNOS) 2977 kfree(ses->serverNOS);
2992 kfree(ses->serverNOS);
2993 ses->serverNOS = kzalloc(len+1,GFP_KERNEL); 2978 ses->serverNOS = kzalloc(len+1,GFP_KERNEL);
2994 strncpy(ses->serverNOS, bcc_ptr, len); 2979 strncpy(ses->serverNOS, bcc_ptr, len);
2995 bcc_ptr += len; 2980 bcc_ptr += len;