[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#756761: synctex_parser: memory leak in _synctex_open



Source: texlive-bin
Version: 2014.20140528.34243-5
Severity: normal
Tags: patch

There seems to be a memory leak in the implementation of _synctex_open.
build_output points to a memory location acquired with malloc, but build_output
is never passed to free. The attached patch adds the necessary calls to clean up
the allocated memory.

Cheers
-- 
Sebastian Ramacher
--- texlive-bin-2014.20140528.34243.orig/texk/web2c/synctexdir/synctex_parser.c
+++ texlive-bin-2014.20140528.34243/texk/web2c/synctexdir/synctex_parser.c
@@ -2878,6 +2878,7 @@ int _synctex_open(const char * output, c
 				build_output[0] = '\0';
 			} else {
 				if (build_output != strcpy(build_output,output)) {
+					free(build_output);
 					return -4;
 				}
 				build_output[lpc-output]='\0';
@@ -2886,15 +2887,20 @@ int _synctex_open(const char * output, c
 				/*	Append a path separator if necessary. */
 				if (!SYNCTEX_IS_PATH_SEPARATOR(build_output[strlen(build_directory)-1])) {
 					if (build_output != strcat(build_output,"/")) {
+						free(build_output);
 						return -2;
 					}
 				}
 				/*	Append the last path component of the output. */
 				if (build_output != strcat(build_output,lpc)) {
+					free(build_output);
 					return -3;
 				}
-				return __synctex_open(build_output,synctex_name_ref,file_ref,add_quotes,io_mode_ref);
+				int result = __synctex_open(build_output,synctex_name_ref,file_ref,add_quotes,io_mode_ref);
+				free(build_output);
+				return result;
 			}
+			free(build_output);
 		}
 		return -1;
 	}

Attachment: signature.asc
Description: Digital signature


Reply to: