diff options
Diffstat (limited to 'source3/smbwrapper')
-rw-r--r-- | source3/smbwrapper/shared.c | 13 | ||||
-rw-r--r-- | source3/smbwrapper/smbw_dir.c | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/source3/smbwrapper/shared.c b/source3/smbwrapper/shared.c index a10ef05bfc..90accbb503 100644 --- a/source3/smbwrapper/shared.c +++ b/source3/smbwrapper/shared.c @@ -104,6 +104,7 @@ char *smbw_getshared(const char *name) { int i; struct stat st; + char *var; lockit(); @@ -111,8 +112,9 @@ char *smbw_getshared(const char *name) if (fstat(shared_fd, &st)) goto failed; if (st.st_size != shared_size) { - variables = (char *)Realloc(variables, st.st_size); - if (!variables) goto failed; + var = (char *)Realloc(variables, st.st_size); + if (!var) goto failed; + else variables = var; shared_size = st.st_size; lseek(shared_fd, 0, SEEK_SET); if (read(shared_fd, variables, shared_size) != shared_size) { @@ -156,6 +158,7 @@ set a variable in the shared area void smbw_setshared(const char *name, const char *val) { int l1, l2; + char *var; /* we don't allow variable overwrite */ if (smbw_getshared(name)) return; @@ -165,12 +168,14 @@ void smbw_setshared(const char *name, const char *val) l1 = strlen(name)+1; l2 = strlen(val)+1; - variables = (char *)Realloc(variables, shared_size + l1+l2+4); + var = (char *)Realloc(variables, shared_size + l1+l2+4); - if (!variables) { + if (!var) { DEBUG(0,("out of memory in smbw_setshared\n")); exit(1); } + + variables = var; SSVAL(&variables[shared_size], 0, l1); SSVAL(&variables[shared_size], 2, l2); diff --git a/source3/smbwrapper/smbw_dir.c b/source3/smbwrapper/smbw_dir.c index cd10b488a1..6be88e4df3 100644 --- a/source3/smbwrapper/smbw_dir.c +++ b/source3/smbwrapper/smbw_dir.c @@ -87,7 +87,7 @@ static void smbw_dir_add(struct file_info *finfo, const char *mask, cdl = (struct file_info *)Realloc(cur_dir->list, sizeof(cur_dir->list[0])* (cur_dir->count+100)); - if (!cur_dir->list) { + if (!cdl) { /* oops */ return; } |