[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] modechange: avoid memory leaks for invalid octal modes
From: |
Bernhard Voelker |
Subject: |
[PATCH] modechange: avoid memory leaks for invalid octal modes |
Date: |
Wed, 26 Mar 2014 01:42:11 +0100 |
* lib/modechange.c (mode_compile): During the parsing of
notations like +40, free the 'mc' buffer for invalid mode
strings like +17777 (greater than the maximum octal mode),
=18 (bad octal mode characters) or u=1 ('affected' with
octal modes).
Reproducer, e.g.:
$ valgrind --leak-check=full chmod +17777 file
Introduced via the 2012-03-09 commit, 4730c3e3, "modechange:
add notations +40, 00440, etc.".
Spotted by coverity (RESOURCE_LEAK).
---
ChangeLog | 14 ++++++++++++++
lib/modechange.c | 4 ++--
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 8fa880d..30b364b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2014-03-26 Bernhard Voelker <address@hidden>
+
+ modechange: avoid memory leaks for invalid octal modes
+ * lib/modechange.c (mode_compile): During the parsing of
+ notations like +40, free the 'mc' buffer for invalid mode
+ strings like +17777 (greater than the maximum octal mode),
+ =18 (bad octal mode characters) or u=1 ('affected' with
+ octal modes).
+ Reproducer, e.g.:
+ $ valgrind --leak-check=full chmod +17777 file
+ Introduced via the 2012-03-09 commit, 4730c3e3, "modechange:
+ add notations +40, 00440, etc.".
+ Spotted by coverity (RESOURCE_LEAK).
+
2014-03-24 Paul Eggert <address@hidden>
gitlog-to-changelog: include a dummy git-log-fix file
diff --git a/lib/modechange.c b/lib/modechange.c
index 8ac1879..412fe1d 100644
--- a/lib/modechange.c
+++ b/lib/modechange.c
@@ -220,12 +220,12 @@ mode_compile (char const *mode_string)
{
octal_mode = 8 * octal_mode + *p++ - '0';
if (ALLM < octal_mode)
- return NULL;
+ goto invalid;
}
while ('0' <= *p && *p < '8');
if (affected || (*p && *p != ','))
- return NULL;
+ goto invalid;
affected = mentioned = CHMOD_MODE_BITS;
value = octal_to_mode (octal_mode);
flag = MODE_ORDINARY_CHANGE;
--
1.8.4.5
- [PATCH] modechange: avoid memory leaks for invalid octal modes,
Bernhard Voelker <=