From: Benno Schulenberg Date: Mon, 3 Aug 2015 08:32:52 +0000 (+0000) Subject: Plugging a memory leak. X-Git-Tag: v2.5.0~122 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=455fb4f063826fbc71d43cecbf860ea8dfe61ea9;p=nano.git Plugging a memory leak. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5340 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index 590f3636..dbebbb73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2015-08-03 Benno Schulenberg - * src/rcfile.c (parse_binding): Check value of shortcut->toggle + * src/rcfile.c (parse_binding): Check the value of shortcut->toggle only if it actually is a toggle. Found with valgrind. + * src/files.c (write_lockfile): Plug a leak. Found with valgrind. 2015-08-02 Benno Schulenberg * src/files.c (initialize_buffer): Initialize also openfile->syntax. diff --git a/src/files.c b/src/files.c index 04816d74..0a1f445d 100644 --- a/src/files.c +++ b/src/files.c @@ -138,19 +138,19 @@ int write_lockfile(const char *lockfilename, const char *origfilename, bool modi myuid = geteuid(); if ((mypwuid = getpwuid(myuid)) == NULL) { statusbar(_("Couldn't determine my identity for lock file (getpwuid() failed)")); - return -1; + goto free_and_fail; } mypid = getpid(); if (gethostname(myhostname, 31) < 0) { statusbar(_("Couldn't determine hostname for lock file: %s"), strerror(errno)); - return -1; + goto free_and_fail; } /* Check if the lock exists before we try to delete it...*/ if (stat(lockfilename, &fileinfo) != -1) if (delete_lockfile(lockfilename) < 0) - return -1; + goto free_and_fail; if (ISSET(INSECURE_BACKUP)) cflags = O_WRONLY | O_CREAT | O_APPEND; @@ -165,6 +165,7 @@ int write_lockfile(const char *lockfilename, const char *origfilename, bool modi if (fd < 0) { statusbar(_("Error writing lock file %s: %s"), lockfilename, strerror(errno)); + free(lockdata); return 0; } @@ -175,7 +176,7 @@ int write_lockfile(const char *lockfilename, const char *origfilename, bool modi if (fd < 0 || filestream == NULL) { statusbar(_("Error writing lock file %s: %s"), lockfilename, strerror(errno)); - return -1; + goto free_and_fail; } /* Okay, so at the moment we're following this state for how to @@ -212,7 +213,7 @@ int write_lockfile(const char *lockfilename, const char *origfilename, bool modi if (wroteamt < lockdatalen) { statusbar(_("Error writing lock file %s: %s"), lockfilename, ferror(filestream)); - return -1; + goto free_and_fail; } #ifdef DEBUG @@ -222,12 +223,17 @@ int write_lockfile(const char *lockfilename, const char *origfilename, bool modi if (fclose(filestream) == EOF) { statusbar(_("Error writing lock file %s: %s"), lockfilename, strerror(errno)); - return -1; + goto free_and_fail; } openfile->lock_filename = (char *) lockfilename; + free(lockdata); return 1; + + free_and_fail: + free(lockdata); + return -1; } /* Less exciting, delete the lockfile. Return -1 if unsuccessful and