X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev_libc_wrapper.c;h=fe38993cd729be146090b76b15b439db966ef64f;hp=23cb7b43168bc9ff7c3619bcf1440627f67f8b42;hb=d7363ee14c3ea46611d3e706a3e198e07869afc3;hpb=8a4c0c32f4252efb0f0adbf5cdc0261d359cd568 diff --git a/udev_libc_wrapper.c b/udev_libc_wrapper.c index 23cb7b431..fe38993cd 100644 --- a/udev_libc_wrapper.c +++ b/udev_libc_wrapper.c @@ -58,7 +58,10 @@ size_t strlcpy(char *dst, const char *src, size_t size) bytes++; } - *q = '\0'; + /* If size == 0 there is no space for a final null... */ + if (size) + *q = '\0'; + return bytes; } @@ -99,7 +102,7 @@ uid_t lookup_user(const char *user) pw = getpwnam(user); if (pw == NULL) - dbg("specified user unknown '%s'", user); + info("specified user unknown '%s'", user); else uid = pw->pw_uid; @@ -113,7 +116,7 @@ gid_t lookup_group(const char *group) gr = getgrnam(group); if (gr == NULL) - dbg("specified group unknown '%s'", group); + info("specified group unknown '%s'", group); else gid = gr->gr_gid; @@ -141,7 +144,7 @@ static unsigned long get_id_by_name(const char *uname, const char *dbfile) char *tail; if (file_map(dbfile, &buf, &bufsize) != 0) { - dbg("can't open '%s' as db file", dbfile); + err("can't open '%s' as db file: %s", dbfile, strerror(errno)); return 0; } dbg("search '%s' in '%s'", uname, dbfile); @@ -156,7 +159,8 @@ static unsigned long get_id_by_name(const char *uname, const char *dbfile) if (count >= sizeof(line)) continue; - strlcpy(line, bufline, count); + memcpy(line, bufline, count-1); + line[count-1] = '\0'; pos = line; /* get name */