summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMichael Sparmann <theseven@rockbox.org>2010-06-21 12:34:28 +0000
committerMichael Sparmann <theseven@rockbox.org>2010-06-21 12:34:28 +0000
commit9092f7aa4575abbf265a615256fb4ece7eb2ca5f (patch)
tree15cc5ca8af5a0c6a377e5da3aef4840e41b25842 /apps
parent8eeec17041aba1727fdd8847e3b8254d3ec62239 (diff)
downloadrockbox-9092f7aa4575abbf265a615256fb4ece7eb2ca5f.tar.gz
rockbox-9092f7aa4575abbf265a615256fb4ece7eb2ca5f.zip
Don't leak a file handle if nvram.bin is <8 bytes in size
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27011 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/settings.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/apps/settings.c b/apps/settings.c
index ea59ff1707..12987c4746 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -119,12 +119,14 @@ static bool read_nvram_data(char* buf, int max_len)
119 int var_count = 0, i = 0, buf_pos = 0; 119 int var_count = 0, i = 0, buf_pos = 0;
120#ifndef HAVE_RTC_RAM 120#ifndef HAVE_RTC_RAM
121 int fd = open(NVRAM_FILE,O_RDONLY); 121 int fd = open(NVRAM_FILE,O_RDONLY);
122 int bytes;
122 if (fd < 0) 123 if (fd < 0)
123 return false; 124 return false;
124 memset(buf,0,max_len); 125 memset(buf,0,max_len);
125 if (read(fd,buf,max_len) < 8) /* min is 8 bytes,magic, ver, vars, crc32 */ 126 bytes = read(fd,buf,max_len);
126 return false;
127 close(fd); 127 close(fd);
128 if (bytes < 8) /* min is 8 bytes,magic, ver, vars, crc32 */
129 return false;
128#else 130#else
129 memset(buf,0,max_len); 131 memset(buf,0,max_len);
130 /* read rtc block */ 132 /* read rtc block */