diff options
author | Thomas Martitz <kugel@rockbox.org> | 2010-07-26 00:06:06 +0000 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2010-07-26 00:06:06 +0000 |
commit | f69e995bdaad29a0faf8d44e9f4b7c591e7ee050 (patch) | |
tree | 6b0405d4b82bd0c290c55b6842cd881602726730 /apps | |
parent | a3e6a865df7f40a01e38381881b29b0b16f6ca8c (diff) | |
download | rockbox-f69e995bdaad29a0faf8d44e9f4b7c591e7ee050.tar.gz rockbox-f69e995bdaad29a0faf8d44e9f4b7c591e7ee050.zip |
Fix potential buffer overflow.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27568 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/settings.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/apps/settings.c b/apps/settings.c index 938281f4c2..6f1fd7ad2e 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -1211,13 +1211,13 @@ void set_file(const char* filename, char* setting, const int maxlen) | |||
1211 | else | 1211 | else |
1212 | extlen = strlen(extptr); | 1212 | extlen = strlen(extptr); |
1213 | 1213 | ||
1214 | len = strlen(fptr) - extlen; | 1214 | len = strlen(fptr) - extlen + 1; |
1215 | 1215 | ||
1216 | /* error if filename isn't in ROCKBOX_DIR */ | 1216 | /* error if filename isn't in ROCKBOX_DIR */ |
1217 | if (strncasecmp(ROCKBOX_DIR, filename, ROCKBOX_DIR_LEN) || (len > maxlen)) | 1217 | if (strncasecmp(ROCKBOX_DIR, filename, ROCKBOX_DIR_LEN) || (len > maxlen)) |
1218 | return; | 1218 | return; |
1219 | 1219 | ||
1220 | strlcpy(setting, fptr, len+1); | 1220 | strlcpy(setting, fptr, len); |
1221 | settings_save(); | 1221 | settings_save(); |
1222 | } | 1222 | } |
1223 | 1223 | ||