From 830a9e571eee5330097376e94af7dc0f2d5f2f02 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 1 May 2000 19:43:50 +0000 Subject: locking/posix.c: Fixed double-free nasty crash bug found by insure. utils/make_smbcodepage.c: utils/make_unicodemap.c: Insure 'make install' fixes. Jeremy. (This used to be commit 3b25f7368be3877e9ad27498bc9451ec88d4b07f) --- source3/locking/posix.c | 3 --- source3/utils/make_smbcodepage.c | 4 ++++ source3/utils/make_unicodemap.c | 7 ++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/source3/locking/posix.c b/source3/locking/posix.c index d6eaad89c1..7cada20ac3 100644 --- a/source3/locking/posix.c +++ b/source3/locking/posix.c @@ -246,9 +246,6 @@ int fd_close_posix(struct connection_struct *conn, files_struct *fsp) } } - if (fd_array) - free((char *)fd_array); - /* * Delete all fd's stored in the tdb * for this dev/inode pair. diff --git a/source3/utils/make_smbcodepage.c b/source3/utils/make_smbcodepage.c index f0b68a7bae..1bd3edc263 100644 --- a/source3/utils/make_smbcodepage.c +++ b/source3/utils/make_smbcodepage.c @@ -167,6 +167,7 @@ static int do_compile(int codepage, char *input_file, char *output_file) FILE *fp = NULL; size_t size = 0; char *buf = NULL; + char *orig_buf = NULL; char output_buf[CODEPAGE_HEADER_SIZE + 4 * MAXCODEPAGELINES]; int num_lines = 0; int i = 0; @@ -223,6 +224,8 @@ The maximum size I will believe is 100k.\n", prog_name, size); num_lines = clean_data( &buf, &size); + orig_buf = buf; /* Save for free(). */ + /* There can be a maximum of MAXCODEPAGELINES lines. */ if(num_lines > MAXCODEPAGELINES) { @@ -300,6 +303,7 @@ definition file. File %s has %d.\n", prog_name, MAXCODEPAGELINES, input_file, nu fclose(fp); + free(orig_buf); return 0; } diff --git a/source3/utils/make_unicodemap.c b/source3/utils/make_unicodemap.c index 76c49361be..ff9bb19b6f 100644 --- a/source3/utils/make_unicodemap.c +++ b/source3/utils/make_unicodemap.c @@ -139,6 +139,7 @@ static int do_compile(const char *codepage, const char *input_file, const char * size_t size = 0; size_t offset = 0; char *buf = NULL; + char *orig_buf = NULL; char *output_buf = NULL; uint16 cp_to_ucs2[65536]; uint16 ucs2_to_cp[65536]; @@ -186,6 +187,8 @@ static int do_compile(const char *codepage, const char *input_file, const char * num_lines = clean_data( &buf, &size); + orig_buf = buf; /* Store for free(). */ + /* * Initialize the output data. */ @@ -285,7 +288,9 @@ static int do_compile(const char *codepage, const char *input_file, const char * } fclose(fp); - + + free(orig_buf); + free(output_buf); return 0; } -- cgit