From: Kay Sievers <kay.sievers@vrfy.org>
To: linux-hotplug@vger.kernel.org
Subject: [PATCH] rename strn*() macros to strmax
Date: Thu, 04 Mar 2004 21:08:57 +0000 [thread overview]
Message-ID: <20040304210857.GA17140@vrfy.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 389 bytes --]
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.
thanks,
Kay
[-- Attachment #2: 01-rename-strnmacro.patch --]
[-- Type: text/plain, Size: 5806 bytes --]
===== namedev.c 1.125 vs edited =====
--- 1.125/namedev.c Thu Mar 4 14:38:53 2004
+++ edited/namedev.c Thu Mar 4 21:40:38 2004
@@ -247,27 +247,27 @@
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 @@
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 @@
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 @@
if (len > 0)
pos[len] = '\0';
- strnfieldcat(string, tail, maxsize);
+ strfieldcatmax(string, tail, maxsize);
}
}
@@ -428,7 +428,7 @@
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 */
===== udev-add.c 1.60 vs edited =====
--- 1.60/udev-add.c Thu Mar 4 04:32:07 2004
+++ edited/udev-add.c Thu Mar 4 21:40:38 2004
@@ -141,7 +141,7 @@
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 @@
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 @@
/* 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);
===== udev-remove.c 1.24 vs edited =====
--- 1.24/udev-remove.c Thu Mar 4 04:28:30 2004
+++ edited/udev-remove.c Thu Mar 4 21:40:39 2004
@@ -103,7 +103,7 @@
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);
===== udev.h 1.50 vs edited =====
--- 1.50/udev.h Thu Mar 4 04:26:20 2004
+++ edited/udev.h Thu Mar 4 21:40:39 2004
@@ -73,13 +73,13 @@
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 @@
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); \
===== udev_config.c 1.13 vs edited =====
--- 1.13/udev_config.c Thu Feb 26 02:26:53 2004
+++ edited/udev_config.c Thu Mar 4 21:40:39 2004
@@ -81,7 +81,7 @@
#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) \
===== udevdb.c 1.26 vs edited =====
--- 1.26/udevdb.c Thu Mar 4 04:33:07 2004
+++ edited/udevdb.c Thu Mar 4 21:40:39 2004
@@ -184,7 +184,7 @@
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 @@
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;
}
next reply other threads:[~2004-03-04 21:08 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-04 21:08 Kay Sievers [this message]
2004-03-09 19:51 ` [PATCH] rename strn*() macros to strmax Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040304210857.GA17140@vrfy.org \
--to=kay.sievers@vrfy.org \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).