chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] update udev to scsi_id 0.7
[elogind.git]
/
klibc_fixups.c
diff --git
a/klibc_fixups.c
b/klibc_fixups.c
index bbacfbdc75cf02ada93fa6cf9aed42c6a1667284..d1a452a44981bc948bfb9659db9f0a773d5d3a34 100644
(file)
--- 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;
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 *buf;
+ char *bufline;
size_t bufsize;
size_t cur;
size_t count;
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 */
}
/* loop through the whole file */
-
cur = 0;
cur = 0;
- while (
1
) {
+ while (
cur < bufsize
) {
count = buf_get_line(buf, bufsize, cur);
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, buf
line
, count);
line[count] = '\0';
pos = line;
line[count] = '\0';
pos = line;
- cur += count+1;
- if (cur > bufsize)
- break;
-
/* get name */
name = strsep(&pos, ":");
if (name == NULL)
/* get name */
name = strsep(&pos, ":");
if (name == NULL)