summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-03-09 19:50:15 -0800
committerGreg KH <gregkh@suse.de>2005-04-26 21:35:08 -0700
commit17794d77b97fcb8af263bcecbe03dad5d0e9a89a (patch)
treefc87f4d731a6543aaae346875768ff57fc85413a
parent3f20eac0a58dc3987200773a39163e30b60993fc (diff)
[PATCH] rename strn*() macros to strmax
Hey, I wrote the strn*() macros just 10 days ago and yesterday this trap caught me with the %c{x} bug. The names are misleading cause we all expect that the from field is limited by the size argument, but we actually limit the overall size of the destination string to prevent a overflow. Here we rename all strn*() macros to str*max(). That should be more self-explanatory.
-rw-r--r--namedev.c24
-rw-r--r--udev-add.c6
-rw-r--r--udev-remove.c2
-rw-r--r--udev.h6
-rw-r--r--udev_config.c2
-rw-r--r--udevdb.c4
6 files changed, 22 insertions, 22 deletions
diff --git a/namedev.c b/namedev.c
index dfeadee18a..23d46518ea 100644
--- a/namedev.c
+++ b/namedev.c
@@ -247,27 +247,27 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
case 'b':
if (strlen(udev->bus_id) == 0)
break;
- strnfieldcat(string, udev->bus_id, maxsize);
+ strfieldcatmax(string, udev->bus_id, maxsize);
dbg("substitute bus_id '%s'", udev->bus_id);
break;
case 'k':
if (strlen(udev->kernel_name) == 0)
break;
- strnfieldcat(string, udev->kernel_name, maxsize);
+ strfieldcatmax(string, udev->kernel_name, maxsize);
dbg("substitute kernel name '%s'", udev->kernel_name);
break;
case 'n':
if (strlen(udev->kernel_number) == 0)
break;
- strnfieldcat(string, udev->kernel_number, maxsize);
+ strfieldcatmax(string, udev->kernel_number, maxsize);
dbg("substitute kernel number '%s'", udev->kernel_number);
break;
case 'm':
- strnintcat(string, udev->minor, maxsize);
+ strintcatmax(string, udev->minor, maxsize);
dbg("substitute minor number '%u'", udev->minor);
break;
case 'M':
- strnintcat(string, udev->major, maxsize);
+ strintcatmax(string, udev->major, maxsize);
dbg("substitute major number '%u'", udev->major);
break;
case 'c':
@@ -287,11 +287,11 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
dbg("requested part of result string not found");
break;
}
- strnfieldcpy(temp2, spos, slen+1);
- strnfieldcat(string, temp2, maxsize);
+ strfieldcpymax(temp2, spos, slen+1);
+ strfieldcatmax(string, temp2, maxsize);
dbg("substitute part of result string '%s'", temp2);
} else {
- strnfieldcat(string, udev->program_result, maxsize);
+ strfieldcatmax(string, udev->program_result, maxsize);
dbg("substitute result string '%s'", udev->program_result);
}
break;
@@ -302,14 +302,14 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
dbg("sysfa attribute '%s' not found", attr);
break;
}
- strnfieldcat(string, tmpattr->value, maxsize);
+ strfieldcatmax(string, tmpattr->value, maxsize);
dbg("substitute sysfs value '%s'", tmpattr->value);
} else {
dbg("missing attribute");
}
break;
case '%':
- strnfieldcat(string, "%", maxsize);
+ strfieldcatmax(string, "%", maxsize);
break;
default:
dbg("unknown substitution type '%%%c'", c);
@@ -319,7 +319,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
if (len > 0)
pos[len] = '\0';
- strnfieldcat(string, tail, maxsize);
+ strfieldcatmax(string, tail, maxsize);
}
}
@@ -428,7 +428,7 @@ static int execute_program(char *path, char *value, int len)
dup(fds[1]);
/* copy off our path to use incase we have too many args */
- strnfieldcpy(buffer, path, sizeof(buffer));
+ strfieldcpymax(buffer, path, sizeof(buffer));
if (strchr(path, ' ')) {
/* exec with arguments */
diff --git a/udev-add.c b/udev-add.c
index de1fb953c4..ce723e45cc 100644
--- a/udev-add.c
+++ b/udev-add.c
@@ -141,7 +141,7 @@ static void set_to_local_user(char *user)
struct utmp *u;
time_t recent = 0;
- strnfieldcpy(user, default_owner_str, OWNER_SIZE);
+ strfieldcpymax(user, default_owner_str, OWNER_SIZE);
setutent();
while (1) {
u = getutent();
@@ -158,7 +158,7 @@ static void set_to_local_user(char *user)
if (u->ut_time > recent) {
recent = u->ut_time;
- strnfieldcpy(user, u->ut_user, OWNER_SIZE);
+ strfieldcpymax(user, u->ut_user, OWNER_SIZE);
dbg("local user is '%s'", user);
break;
}
@@ -282,7 +282,7 @@ static int create_node(struct udevice *dev, int fake)
/* create symlink if requested */
foreach_strpart(dev->symlink, " ", pos, len) {
- strnfieldcpy(linkname, pos, len+1);
+ strfieldcpymax(linkname, pos, len+1);
strfieldcpy(filename, udev_root);
strfieldcat(filename, linkname);
dbg("symlink '%s' to node '%s' requested", filename, dev->name);
diff --git a/udev-remove.c b/udev-remove.c
index 195b987411..44ad603d4a 100644
--- a/udev-remove.c
+++ b/udev-remove.c
@@ -103,7 +103,7 @@ static int delete_node(struct udevice *dev)
delete_path(filename);
foreach_strpart(dev->symlink, " ", pos, len) {
- strnfieldcpy(linkname, pos, len+1);
+ strfieldcpymax(linkname, pos, len+1);
strfieldcpy(filename, udev_root);
strfieldcat(filename, linkname);
diff --git a/udev.h b/udev.h
index 32fda379e5..8752f595d6 100644
--- a/udev.h
+++ b/udev.h
@@ -73,13 +73,13 @@ do { \
strncat(to, from, sizeof(to) - strlen(to)-1); \
} while (0)
-#define strnfieldcpy(to, from, maxsize) \
+#define strfieldcpymax(to, from, maxsize) \
do { \
to[maxsize-1] = '\0'; \
strncpy(to, from, maxsize-1); \
} while (0)
-#define strnfieldcat(to, from, maxsize) \
+#define strfieldcatmax(to, from, maxsize) \
do { \
to[maxsize-1] = '\0'; \
strncat(to, from, maxsize - strlen(to)-1); \
@@ -91,7 +91,7 @@ do { \
snprintf((to) + strlen(to), sizeof(to) - strlen(to)-1, "%u", i); \
} while (0)
-#define strnintcat(to, i, maxsize) \
+#define strintcatmax(to, i, maxsize) \
do { \
to[maxsize-1] = '\0'; \
snprintf((to) + strlen(to), maxsize - strlen(to)-1, "%u", i); \
diff --git a/udev_config.c b/udev_config.c
index de83ef9c4c..e2031dc64d 100644
--- a/udev_config.c
+++ b/udev_config.c
@@ -81,7 +81,7 @@ static void init_variables(void)
#define set_var(_name, _var) \
if (strcasecmp(variable, _name) == 0) { \
dbg_parse("%s = '%s'", _name, value); \
- strnfieldcpy(_var, value, sizeof(_var));\
+ strfieldcpymax(_var, value, sizeof(_var));\
}
#define set_bool(_name, _var) \
diff --git a/udevdb.c b/udevdb.c
index b12f5b3d46..01df3ba7e1 100644
--- a/udevdb.c
+++ b/udevdb.c
@@ -184,7 +184,7 @@ static int find_device_by_name(char *path, struct udevice *dev)
if (strncmp(dev->name, find_name, sizeof(dev->name)) == 0) {
memcpy(find_dev, dev, sizeof(struct udevice));
- strnfieldcpy(find_path, path, NAME_SIZE);
+ strfieldcpymax(find_path, path, NAME_SIZE);
find_found = 1;
/* stop search */
return 1;
@@ -198,7 +198,7 @@ static int find_device_by_name(char *path, struct udevice *dev)
continue;
memcpy(find_dev, dev, sizeof(struct udevice));
- strnfieldcpy(find_path, path, NAME_SIZE);
+ strfieldcpymax(find_path, path, NAME_SIZE);
find_found = 1;
return 1;
}