summaryrefslogtreecommitdiff
path: root/klibc_fixups.c
diff options
context:
space:
mode:
Diffstat (limited to 'klibc_fixups.c')
-rw-r--r--klibc_fixups.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/klibc_fixups.c b/klibc_fixups.c
index bbacfbdc75..d1a452a449 100644
--- a/klibc_fixups.c
+++ b/klibc_fixups.c
@@ -41,8 +41,9 @@
static unsigned long get_id_by_name(const char *uname, const char *dbfile)
{
unsigned long id = -1;
- char line[255];
+ char line[LINE_SIZE];
char *buf;
+ char *bufline;
size_t bufsize;
size_t cur;
size_t count;
@@ -59,19 +60,19 @@ static unsigned long get_id_by_name(const char *uname, const char *dbfile)
}
/* loop through the whole file */
-
cur = 0;
- while (1) {
+ while (cur < bufsize) {
count = buf_get_line(buf, bufsize, cur);
+ bufline = &buf[cur];
+ cur += count+1;
+
+ if (count >= LINE_SIZE)
+ continue;
- strncpy(line, buf + cur, count);
+ strncpy(line, bufline, count);
line[count] = '\0';
pos = line;
- cur += count+1;
- if (cur > bufsize)
- break;
-
/* get name */
name = strsep(&pos, ":");
if (name == NULL)