mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
r9225: Various minor CIFS mount helper fixes to less common error paths.
These bugs were found by Coverity static source code analysis tools.
This commit is contained in:
parent
ec4ea17ce6
commit
98a7304b6b
@ -39,7 +39,7 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#define MOUNT_CIFS_VERSION_MAJOR "1"
|
#define MOUNT_CIFS_VERSION_MAJOR "1"
|
||||||
#define MOUNT_CIFS_VERSION_MINOR "8"
|
#define MOUNT_CIFS_VERSION_MINOR "9"
|
||||||
|
|
||||||
#ifndef MOUNT_CIFS_VENDOR_SUFFIX
|
#ifndef MOUNT_CIFS_VENDOR_SUFFIX
|
||||||
#define MOUNT_CIFS_VENDOR_SUFFIX ""
|
#define MOUNT_CIFS_VENDOR_SUFFIX ""
|
||||||
@ -127,8 +127,10 @@ static int open_cred_file(char * file_name)
|
|||||||
if(fs == NULL)
|
if(fs == NULL)
|
||||||
return errno;
|
return errno;
|
||||||
line_buf = malloc(4096);
|
line_buf = malloc(4096);
|
||||||
if(line_buf == NULL)
|
if(line_buf == NULL) {
|
||||||
|
fclose(fs);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
while(fgets(line_buf,4096,fs)) {
|
while(fgets(line_buf,4096,fs)) {
|
||||||
/* parse line from credential file */
|
/* parse line from credential file */
|
||||||
@ -570,13 +572,15 @@ static void check_for_comma(char ** ppasswrd)
|
|||||||
char *pass;
|
char *pass;
|
||||||
int i,j;
|
int i,j;
|
||||||
int number_of_commas = 0;
|
int number_of_commas = 0;
|
||||||
int len = strlen(*ppasswrd);
|
int len;
|
||||||
|
|
||||||
if(ppasswrd == NULL)
|
if(ppasswrd == NULL)
|
||||||
return;
|
return;
|
||||||
else
|
else
|
||||||
(pass = *ppasswrd);
|
(pass = *ppasswrd);
|
||||||
|
|
||||||
|
len = strlen(pass);
|
||||||
|
|
||||||
for(i=0;i<len;i++) {
|
for(i=0;i<len;i++) {
|
||||||
if(pass[i] == ',')
|
if(pass[i] == ',')
|
||||||
number_of_commas++;
|
number_of_commas++;
|
||||||
@ -692,7 +696,6 @@ static char * parse_server(char ** punc_name)
|
|||||||
char * ipaddress_string = NULL;
|
char * ipaddress_string = NULL;
|
||||||
struct hostent * host_entry;
|
struct hostent * host_entry;
|
||||||
struct in_addr server_ipaddr;
|
struct in_addr server_ipaddr;
|
||||||
int rc;
|
|
||||||
|
|
||||||
if(length > 1023) {
|
if(length > 1023) {
|
||||||
printf("mount error: UNC name too long");
|
printf("mount error: UNC name too long");
|
||||||
@ -715,6 +718,13 @@ static char * parse_server(char ** punc_name)
|
|||||||
if(share) {
|
if(share) {
|
||||||
free_share_name = 1;
|
free_share_name = 1;
|
||||||
*punc_name = malloc(length+3);
|
*punc_name = malloc(length+3);
|
||||||
|
if(*punc_name == NULL) {
|
||||||
|
/* put the original string back if
|
||||||
|
no memory left */
|
||||||
|
*punc_name = unc_name;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
*share = '/';
|
*share = '/';
|
||||||
strncpy((*punc_name)+2,unc_name,length);
|
strncpy((*punc_name)+2,unc_name,length);
|
||||||
unc_name = *punc_name;
|
unc_name = *punc_name;
|
||||||
@ -744,8 +754,7 @@ continue_unc_parsing:
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if(host_entry == NULL) {
|
if(host_entry == NULL) {
|
||||||
printf("mount error: could not find target server. TCP name %s not found ", unc_name);
|
printf("mount error: could not find target server. TCP name %s not found\n", unc_name);
|
||||||
printf(" rc = %d\n",rc);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
/* BB should we pass an alternate version of the share name as Unicode */
|
/* BB should we pass an alternate version of the share name as Unicode */
|
||||||
@ -1018,6 +1027,9 @@ mount_retry:
|
|||||||
optlen = 0;
|
optlen = 0;
|
||||||
if(share_name)
|
if(share_name)
|
||||||
optlen += strlen(share_name) + 4;
|
optlen += strlen(share_name) + 4;
|
||||||
|
else {
|
||||||
|
printf("No server share name specified\n");
|
||||||
|
}
|
||||||
if(user_name)
|
if(user_name)
|
||||||
optlen += strlen(user_name) + 6;
|
optlen += strlen(user_name) + 6;
|
||||||
if(ipaddr)
|
if(ipaddr)
|
||||||
|
Loading…
Reference in New Issue
Block a user