diff options
-rw-r--r-- | source3/client/mount.cifs.c | 13 | ||||
-rw-r--r-- | source3/lib/readline.c | 1 | ||||
-rw-r--r-- | source3/modules/vfs_smb_traffic_analyzer.c | 1 | ||||
-rw-r--r-- | source3/smbd/notify_inotify.c | 4 | ||||
-rw-r--r-- | source3/winbindd/winbindd_dual.c | 2 |
5 files changed, 18 insertions, 3 deletions
diff --git a/source3/client/mount.cifs.c b/source3/client/mount.cifs.c index fd8014cf9f..2a9c2b7304 100644 --- a/source3/client/mount.cifs.c +++ b/source3/client/mount.cifs.c @@ -441,6 +441,7 @@ static int parse_options(char ** optionsp, int * filesys_flags) goto nocopy; } else { printf("username specified with no parameter\n"); + SAFE_FREE(out); return 1; /* needs_arg; */ } } else { @@ -473,6 +474,7 @@ static int parse_options(char ** optionsp, int * filesys_flags) domain_name = check_for_domain(&value); } else { printf("username too long\n"); + SAFE_FREE(out); return 1; } } @@ -488,6 +490,7 @@ static int parse_options(char ** optionsp, int * filesys_flags) got_password = 1; } else { printf("password too long\n"); + SAFE_FREE(out); return 1; } } else if (strncmp(data, "sec", 3) == 0) { @@ -505,6 +508,7 @@ static int parse_options(char ** optionsp, int * filesys_flags) got_ip = 1; } else { printf("ip address too long\n"); + SAFE_FREE(out); return 1; } } else if ((strncmp(data, "unc", 3) == 0) @@ -512,6 +516,7 @@ static int parse_options(char ** optionsp, int * filesys_flags) || (strncmp(data, "path", 4) == 0)) { if (!value || !*value) { printf("invalid path to network resource\n"); + SAFE_FREE(out); return 1; /* needs_arg; */ } else if(strnlen(value,5) < 5) { printf("UNC name too short"); @@ -526,6 +531,7 @@ static int parse_options(char ** optionsp, int * filesys_flags) got_unc = 1; } else if (strncmp(value, "\\\\", 2) != 0) { printf("UNC Path does not begin with // or \\\\ \n"); + SAFE_FREE(out); return 1; } else { if(got_unc) @@ -535,6 +541,7 @@ static int parse_options(char ** optionsp, int * filesys_flags) } } else { printf("CIFS: UNC name too long\n"); + SAFE_FREE(out); return 1; } } else if ((strncmp(data, "dom" /* domain */, 3) == 0) @@ -544,12 +551,14 @@ static int parse_options(char ** optionsp, int * filesys_flags) and "WORKGRP" etc. */ if (!value || !*value) { printf("CIFS: invalid domain name\n"); + SAFE_FREE(out); return 1; /* needs_arg; */ } if (strnlen(value, DOMAIN_SIZE+1) < DOMAIN_SIZE+1) { got_domain = 1; } else { printf("domain name too long\n"); + SAFE_FREE(out); return 1; } } else if (strncmp(data, "cred", 4) == 0) { @@ -558,10 +567,12 @@ static int parse_options(char ** optionsp, int * filesys_flags) if(rc) { printf("error %d (%s) opening credential file %s\n", rc, strerror(rc), value); + SAFE_FREE(out); return 1; } } else { printf("invalid credential file name specified\n"); + SAFE_FREE(out); return 1; } } else if (strncmp(data, "uid", 3) == 0) { @@ -600,6 +611,7 @@ static int parse_options(char ** optionsp, int * filesys_flags) } else if (strcmp(data, "file_mode") == 0 || strcmp(data, "fmask")==0) { if (!value || !*value) { printf ("Option '%s' requires a numerical argument\n", data); + SAFE_FREE(out); return 1; } @@ -614,6 +626,7 @@ static int parse_options(char ** optionsp, int * filesys_flags) } else if (strcmp(data, "dir_mode") == 0 || strcmp(data, "dmask")==0) { if (!value || !*value) { printf ("Option '%s' requires a numerical argument\n", data); + SAFE_FREE(out); return 1; } diff --git a/source3/lib/readline.c b/source3/lib/readline.c index cafb5a9f62..34867aad9e 100644 --- a/source3/lib/readline.c +++ b/source3/lib/readline.c @@ -105,6 +105,7 @@ static char *smb_readline_replacement(const char *prompt, void (*callback)(void) callback(); } } + SAFE_FREE(line); return NULL; } diff --git a/source3/modules/vfs_smb_traffic_analyzer.c b/source3/modules/vfs_smb_traffic_analyzer.c index 9456afb811..63cc904bed 100644 --- a/source3/modules/vfs_smb_traffic_analyzer.c +++ b/source3/modules/vfs_smb_traffic_analyzer.c @@ -123,6 +123,7 @@ static int smb_traffic_analyzer_connect_unix_socket(vfs_handle_struct *handle, DEBUG(1, ("smb_traffic_analyzer_connect_unix_socket: " "Couldn't create socket, " "make sure stad is running!\n")); + return -1; } remote.sun_family = AF_UNIX; strlcpy(remote.sun_path, name, diff --git a/source3/smbd/notify_inotify.c b/source3/smbd/notify_inotify.c index fa0f0ed51d..c6c12a9cd2 100644 --- a/source3/smbd/notify_inotify.c +++ b/source3/smbd/notify_inotify.c @@ -243,14 +243,14 @@ static void inotify_handler(struct event_context *ev, struct fd_event *fde, e0 = e = (struct inotify_event *)TALLOC_SIZE(in, bufsize); if (e == NULL) return; - if (read(in->fd, e0, bufsize) != bufsize) { + if (sys_read(in->fd, e0, bufsize) != bufsize) { DEBUG(0,("Failed to read all inotify data\n")); talloc_free(e0); return; } /* we can get more than one event in the buffer */ - while (bufsize >= sizeof(*e)) { + while (e && (bufsize >= sizeof(*e))) { struct inotify_event *e2 = NULL; bufsize -= e->len + sizeof(*e); if (bufsize >= sizeof(*e)) { diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c index 994c94b5be..03d1e043bf 100644 --- a/source3/winbindd/winbindd_dual.c +++ b/source3/winbindd/winbindd_dual.c @@ -1259,7 +1259,7 @@ static bool fork_domain_child(struct winbindd_child *child) set_domain_online_request(child->domain); - if (primary_domain != child->domain) { + if (primary_domain && (primary_domain != child->domain)) { /* We need to talk to the primary * domain as well as the trusted * domain inside a trusted domain |