summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extras/scsi_id/scsi_id.c26
-rw-r--r--extras/usb_id/usb_id.c33
-rw-r--r--extras/volume_id/volume_id/util.c8
-rw-r--r--extras/volume_id/volume_id/volume_id.c2
-rw-r--r--udev_db.c2
-rw-r--r--udev_rules.c6
-rw-r--r--udev_utils_run.c2
7 files changed, 38 insertions, 41 deletions
diff --git a/extras/scsi_id/scsi_id.c b/extras/scsi_id/scsi_id.c
index 8e5172f93c..a46d1b377d 100644
--- a/extras/scsi_id/scsi_id.c
+++ b/extras/scsi_id/scsi_id.c
@@ -133,42 +133,42 @@ static void set_str(char *to, const char *from, size_t count)
to[j] = '\0';
}
-static void set_type(char *to, const char *from, int count)
+static void set_type(char *to, const char *from, size_t len)
{
int type_num;
char *eptr;
+ char *type = "generic";
type_num = strtoul(from, &eptr, 0);
if (eptr != from) {
switch (type_num) {
case 0:
- sprintf(to, "disk");
+ type = "disk";
break;
case 1:
- sprintf(to, "tape");
+ type = "tape";
break;
case 4:
- sprintf(to, "optical");
+ type = "optical";
break;
case 5:
- sprintf(to, "cd");
+ type = "cd";
break;
case 7:
- sprintf(to, "optical");
+ type = "optical";
break;
case 0xe:
- sprintf(to, "disk");
+ type = "disk";
break;
case 0xf:
- sprintf(to, "optical");
+ type = "optical";
break;
default:
- sprintf(to, "generic");
break;
}
- } else {
- sprintf(to, "generic");
}
+ strncpy(to, type, len);
+ to[len-1] = '\0';
}
static int get_major_minor(struct sysfs_class_device *class_dev, int *maj,
@@ -475,7 +475,7 @@ static int set_options(int argc, char **argv, const char *short_opts,
*/
optind = 1;
while (1) {
- option = getopt(argc, argv, short_options);
+ option = getopt(argc, argv, short_opts);
if (option == -1)
break;
@@ -601,7 +601,7 @@ static int per_dev_options(struct sysfs_device *scsi_dev, int *good_bad,
scsi_dev->name);
return -1;
}
- set_type(type_str, type->value, sizeof(type_str)-1);
+ set_type(type_str, type->value, sizeof(type_str));
type = sysfs_get_device_attr(scsi_dev, "rev");
if (!type) {
diff --git a/extras/usb_id/usb_id.c b/extras/usb_id/usb_id.c
index 37db6d14db..f5ee795924 100644
--- a/extras/usb_id/usb_id.c
+++ b/extras/usb_id/usb_id.c
@@ -119,25 +119,26 @@ static void set_str(char *to, const char *from, size_t count)
*
* Set the type based on the USB interface class
*/
-static void set_usb_iftype(char *to, const char *from, int count)
+static void set_usb_iftype(char *to, const char *from, size_t len)
{
int type_num;
char *eptr;
+ char *type = "generic";
type_num = strtoul(from, &eptr, 0);
if (eptr != from) {
switch (type_num) {
case 1:
- sprintf(to, "audio");
+ type = "audio";
break;
case 3:
- sprintf(to, "hid");
+ type = "hid";
break;
case 7:
- sprintf(to, "printer");
+ type = "printer";
break;
case 8:
- sprintf(to, "disk");
+ type = "disk";
break;
case 2: /* CDC-Control */
case 5: /* Physical */
@@ -152,12 +153,11 @@ static void set_usb_iftype(char *to, const char *from, int count)
case 0xf2: /* Application-specific */
case 0xff: /* Vendor-specific */
default:
- sprintf(to, "generic");
break;
}
- } else {
- sprintf(to, "generic");
}
+ strncpy(to, type, len);
+ to[len-1] = '\0';
}
/*
@@ -166,32 +166,35 @@ static void set_usb_iftype(char *to, const char *from, int count)
* Set the type base on the interfaceSubClass.
* Valid for Mass-Storage devices (type 8) only.
*/
-static int set_usb_ifsubtype(char *to, const char *from, int count)
+static int set_usb_ifsubtype(char *to, const char *from, size_t len)
{
int type_num = 0;
char *eptr;
+ char *type = "generic";
type_num = strtoul(from, &eptr, 0);
if (eptr != from) {
switch (type_num) {
case 2:
- sprintf(to, "cd");
+ type = "cd";
break;
case 3:
- sprintf(to, "tape");
+ type = "tape";
break;
case 4: /* UFI */
case 5: /* SFF-8070i */
- sprintf(to, "floppy");
+ type = "floppy";
break;
case 1: /* RBC devices */
case 6: /* Transparent SPC-2 devices */
- sprintf(to, "disk");
+ type = "disk";
+ break;
+ default:
break;
}
- } else {
- sprintf(to, "generic");
}
+ strncpy(to, type, len);
+ to[len-1] = '\0';
return type_num;
}
diff --git a/extras/volume_id/volume_id/util.c b/extras/volume_id/volume_id/util.c
index a145a8aa2f..868d67306c 100644
--- a/extras/volume_id/volume_id/util.c
+++ b/extras/volume_id/volume_id/util.c
@@ -114,12 +114,6 @@ void volume_id_set_label_raw(struct volume_id *id, const uint8_t *buf, size_t co
id->label_raw_len = count;
}
-static size_t my_strnlen(const char *s, size_t max) {
- const char *p = s;
- for (; *p && max--; ++p);
- return(p - s);
-}
-
void volume_id_set_label_string(struct volume_id *id, const uint8_t *buf, size_t count)
{
unsigned int i;
@@ -127,7 +121,7 @@ void volume_id_set_label_string(struct volume_id *id, const uint8_t *buf, size_t
memcpy(id->label, buf, count);
/* remove trailing whitespace */
- i = my_strnlen(id->label, count);
+ i = strnlen(id->label, count);
while (i--) {
if (!isspace(id->label[i]))
break;
diff --git a/extras/volume_id/volume_id/volume_id.c b/extras/volume_id/volume_id/volume_id.c
index 4c4a42a00d..e7d4d75666 100644
--- a/extras/volume_id/volume_id/volume_id.c
+++ b/extras/volume_id/volume_id/volume_id.c
@@ -227,7 +227,7 @@ struct volume_id *volume_id_open_dev_t(dev_t devt)
snprintf(tmp_node, VOLUME_ID_PATH_MAX,
"/dev/.volume_id-%u-%u-%u", getpid(), major(devt), minor(devt));
- tmp_node[VOLUME_ID_PATH_MAX] = '\0';
+ tmp_node[VOLUME_ID_PATH_MAX-1] = '\0';
/* create tempory node to open the block device */
unlink(tmp_node);
diff --git a/udev_db.c b/udev_db.c
index f9adf5c631..ac5a7e6d65 100644
--- a/udev_db.c
+++ b/udev_db.c
@@ -262,7 +262,7 @@ int udev_db_search_name(char *devpath, size_t len, const char *name)
nodename[count-2] = '\0';
dbg("compare '%s' '%s'", nodename, name);
if (strcmp(nodename, name) == 0) {
- memcpy(devpath, &bufline[2], count-2);
+ strlcpy(devpath, nodename, len);
devpath[count-2] = '\0';
file_unmap(buf, bufsize);
closedir(dir);
diff --git a/udev_rules.c b/udev_rules.c
index 40c010c63f..791e98ec07 100644
--- a/udev_rules.c
+++ b/udev_rules.c
@@ -270,7 +270,7 @@ static int import_parent_into_env(struct udevice *udev, struct sysfs_class_devic
/* finds the lowest positive N such that <name>N isn't present in the udevdb
* if <name> doesn't exist, 0 is returned, N otherwise
*/
-static int find_free_number(struct udevice *udev, const char *name)
+static int find_free_number(const char *name)
{
char devpath[PATH_SIZE];
char filename[PATH_SIZE];
@@ -397,7 +397,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
{ .name = "root", .fmt = 'r', .type = SUBST_ROOT },
{ .name = "modalias", .fmt = 'A', .type = SUBST_MODALIAS },
{ .name = "env", .fmt = 'E', .type = SUBST_ENV },
- {}
+ { NULL, '\0', 0 }
};
enum subst_type type;
const struct subst_map *subst;
@@ -546,7 +546,7 @@ found:
dbg("substitute sysfs value '%s'", temp2);
break;
case SUBST_ENUM:
- next_free_number = find_free_number(udev, string);
+ next_free_number = find_free_number(string);
if (next_free_number > 0) {
sprintf(temp2, "%d", next_free_number);
strlcat(string, temp2, maxsize);
diff --git a/udev_utils_run.c b/udev_utils_run.c
index 50b31781e7..44fb7f8316 100644
--- a/udev_utils_run.c
+++ b/udev_utils_run.c
@@ -164,7 +164,7 @@ int run_program(const char *command, const char *subsystem,
default:
/* read from child if requested */
if (outpipe[0] > 0 || errpipe[0] > 0) {
- size_t count;
+ ssize_t count;
size_t respos = 0;
/* parent closes child ends of pipes */