summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
738428b)
strlcpy counts the sourec string lengt and is therefore not suitable
to copy a defined length of characters from one string to another.
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
+ udev_rules_close(&rules);
udev_cleanup_device(&udev);
exit:
udev_cleanup_device(&udev);
exit:
if (bufline[0] == COMMENT_CHARACTER)
continue;
if (bufline[0] == COMMENT_CHARACTER)
continue;
- strlcpy(line, bufline, count+1);
+ memcpy(line, bufline, count);
+ line[count] = '\0';
linepos = line;
retval = get_key(&linepos, &variable, &value);
linepos = line;
retval = get_key(&linepos, &variable, &value);
case 'P':
if (count > sizeof(udev->devpath))
count = sizeof(udev->devpath);
case 'P':
if (count > sizeof(udev->devpath))
count = sizeof(udev->devpath);
- strlcpy(udev->devpath, &bufline[2], count-1);
+ memcpy(udev->devpath, &bufline[2], count-2);
+ udev->devpath[count-2] = '\0';
break;
case 'N':
if (count > sizeof(udev->name))
count = sizeof(udev->name);
break;
case 'N':
if (count > sizeof(udev->name))
count = sizeof(udev->name);
- strlcpy(udev->name, &bufline[2], count-1);
+ memcpy(udev->name, &bufline[2], count-2);
+ udev->name[count-2] = '\0';
break;
case 'M':
if (count > sizeof(line))
count = sizeof(line);
break;
case 'M':
if (count > sizeof(line))
count = sizeof(line);
- strlcpy(line, &bufline[2], count-1);
+ memcpy(line, &bufline[2], count-2);
+ line[count-2] = '\0';
sscanf(line, "%u:%u", &major, &minor);
udev->devt = makedev(major, minor);
break;
case 'S':
if (count > sizeof(line))
count = sizeof(line);
sscanf(line, "%u:%u", &major, &minor);
udev->devt = makedev(major, minor);
break;
case 'S':
if (count > sizeof(line))
count = sizeof(line);
- strlcpy(line, &bufline[2], count-1);
+ memcpy(line, &bufline[2], count-2);
+ line[count-2] = '\0';
name_list_add(&udev->symlink_list, line, 0);
break;
case 'A':
if (count > sizeof(line))
count = sizeof(line);
name_list_add(&udev->symlink_list, line, 0);
break;
case 'A':
if (count > sizeof(line))
count = sizeof(line);
- strlcpy(line, &bufline[2], count-1);
+ memcpy(line, &bufline[2], count-2);
+ line[count-2] = '\0';
udev->partitions = atoi(line);
break;
case 'R':
if (count > sizeof(line))
count = sizeof(line);
udev->partitions = atoi(line);
break;
case 'R':
if (count > sizeof(line))
count = sizeof(line);
- strlcpy(line, &bufline[2], count-1);
+ memcpy(line, &bufline[2], count-2);
+ line[count-2] = '\0';
udev->ignore_remove = atoi(line);
break;
case 'E':
if (count > sizeof(line))
count = sizeof(line);
udev->ignore_remove = atoi(line);
break;
case 'E':
if (count > sizeof(line))
count = sizeof(line);
- strlcpy(line, &bufline[2], count-1);
+ memcpy(line, &bufline[2], count-2);
+ line[count-2] = '\0';
name_list_add(&udev->env_list, line, 0);
break;
}
name_list_add(&udev->env_list, line, 0);
break;
}
case 'P':
if (count > sizeof(path))
count = sizeof(path);
case 'P':
if (count > sizeof(path))
count = sizeof(path);
- strlcpy(path, &bufline[2], count-1);
+ memcpy(path, &bufline[2], count-2);
+ path[count-2] = '\0';
break;
case 'N':
case 'S':
if (count > sizeof(nodename))
count = sizeof(nodename);
break;
case 'N':
case 'S':
if (count > sizeof(nodename))
count = sizeof(nodename);
- strlcpy(nodename, &bufline[2], count-1);
+ memcpy(nodename, &bufline[2], count-2);
+ nodename[count-2] = '\0';
dbg("compare '%s' '%s'", nodename, name);
if (strcmp(nodename, name) == 0) {
dbg("compare '%s' '%s'", nodename, name);
if (strcmp(nodename, name) == 0) {
- strlcpy(devpath, path, len);
+ memcpy(devpath, &bufline[2], count-2);
+ devpath[count-2] = '\0';
file_unmap(buf, bufsize);
closedir(dir);
return 0;
file_unmap(buf, bufsize);
closedir(dir);
return 0;
case 'P':
if (count > sizeof(path))
count = sizeof(path);
case 'P':
if (count > sizeof(path))
count = sizeof(path);
- strlcpy(path, &bufline[2], count-1);
+ memcpy(path, &bufline[2], count-2);
+ path[count-2] = '\0';
break;
case 'N':
if (count > sizeof(nodename))
count = sizeof(nodename);
break;
case 'N':
if (count > sizeof(nodename))
count = sizeof(nodename);
- strlcpy(nodename, &bufline[2], count-1);
+ memcpy(nodename, &bufline[2], count-2);
+ nodename[count-2] = '\0';
break;
default:
continue;
break;
default:
continue;
if (count >= sizeof(line))
continue;
if (count >= sizeof(line))
continue;
- strlcpy(line, bufline, count);
+ memcpy(line, bufline, count-1);
+ line[count-1] = '\0';
pos = line;
/* get name */
pos = line;
/* get name */
if (bufline[0] == COMMENT_CHARACTER)
continue;
if (bufline[0] == COMMENT_CHARACTER)
continue;
- strlcpy(line, bufline, count+1);
+ memcpy(line, bufline, count);
+ line[count] = '\0';
linepos = line;
if (get_key(&linepos, &variable, &value) == 0) {
linepos = line;
if (get_key(&linepos, &variable, &value) == 0) {
char *temp;
linepos = *line;
char *temp;
linepos = *line;
+ if (linepos == NULL && linepos[0] == '\0')
return -1;
/* skip whitespace */
return -1;
/* skip whitespace */
linepos++;
/* get the key */
linepos++;
/* get the key */
+ if (linepos[0] == '\0')
+ return -1;
while (1) {
linepos++;
if (linepos[0] == '\0')
while (1) {
linepos++;
if (linepos[0] == '\0')
/* skip whitespace after key */
while (isspace(linepos[0]))
linepos++;
/* skip whitespace after key */
while (isspace(linepos[0]))
linepos++;
+ if (linepos[0] == '\0')
+ return -1;
/* get operation type */
if (linepos[0] == '=' && linepos[1] == '=') {
/* get operation type */
if (linepos[0] == '=' && linepos[1] == '=') {
/* skip whitespace after operator */
while (isspace(linepos[0]))
linepos++;
/* skip whitespace after operator */
while (isspace(linepos[0]))
linepos++;
+ if (linepos[0] == '\0')
+ return -1;
/* get the value*/
if (linepos[0] == '"')
/* get the value*/
if (linepos[0] == '"')
list_for_each_entry_safe(name_loop, name_tmp, &name_list, node) {
parse_file(rules, name_loop->name);
list_del(&name_loop->node);
list_for_each_entry_safe(name_loop, name_tmp, &name_list, node) {
parse_file(rules, name_loop->name);
list_del(&name_loop->node);