* [PATCH] rename strn*() macros to strmax
@ 2004-03-04 21:08 Kay Sievers
2004-03-09 19:51 ` Greg KH
0 siblings, 1 reply; 2+ messages in thread
From: Kay Sievers @ 2004-03-04 21:08 UTC (permalink / raw)
To: linux-hotplug
[-- 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;
}
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] rename strn*() macros to strmax
2004-03-04 21:08 [PATCH] rename strn*() macros to strmax Kay Sievers
@ 2004-03-09 19:51 ` Greg KH
0 siblings, 0 replies; 2+ messages in thread
From: Greg KH @ 2004-03-09 19:51 UTC (permalink / raw)
To: linux-hotplug
On Thu, Mar 04, 2004 at 10:08:57PM +0100, Kay Sievers wrote:
> 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.
Applied, thanks.
greg k-h
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id\x1470&alloc_id638&op=click
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-03-09 19:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-04 21:08 [PATCH] rename strn*() macros to strmax Kay Sievers
2004-03-09 19:51 ` Greg KH
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).