chiark / gitweb /
[PATCH] rename strn*() macros to strmax
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>
Wed, 10 Mar 2004 03:50:15 +0000 (19:50 -0800)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 04:35:08 +0000 (21:35 -0700)
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.

namedev.c
udev-add.c
udev-remove.c
udev.h
udev_config.c
udevdb.c

index dfeadee18a7e5100b1e3ff35ac67ec1e41cafc55..23d46518ea322208aa3ce6e241a298d03989d6d6 100644 (file)
--- 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 */
index de1fb953c4e774c8427bbb4d1646ab9d53f88e5c..ce723e45cc74d8e2ce9266e1d7b53efbe51204c7 100644 (file)
@@ -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);
index 195b9874111b2269e0746082984810bb32722ab1..44ad603d4acea84db0e1a4a50b53c919579a8d45 100644 (file)
@@ -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 32fda379e54e467965bce37735580ab2540c6f92..8752f595d6699e7862d8a9b1b80e52dc951b5b8b 100644 (file)
--- 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); \
index de83ef9c4c770160ae52645695fe09bec2379686..e2031dc64d0d13a2b317a74495efbed89573dad0 100644 (file)
@@ -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)                          \
index b12f5b3d46e5538b948cf8799f7269090293f9fa..01df3ba7e12ac084918f54f67746e0f08948ef91 100644 (file)
--- 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;
        }