[systemd-devel] udevd-work: ressize 1024 too short

Robert Milasan rmilasan at suse.com
Tue Mar 25 05:36:17 PDT 2014


Hello, seems that under some conditions in udev_rules_apply_to_event
(@TK_M_PROGRAM) the fact that result is 1024 bytes creates problems if
the output of the running command/app is bigger then 1024 bytes.

For example, having a VG with 1000 PVs, can create this issue. Actually
the issue is created, in our case, by dmsetup, which output will be
bigger then 1024 (due to the 1000 PVs).

Mar 11 14:55:35 example.org udevd-work[2733]: '/sbin/dmsetup deps -j253
-m0'
started
Mar 11 14:55:35 example.org udevd-work[2733]: '/sbin/dmsetup' (stdout)
'104
dependencies    : (94, 101) (94, 97) (94, 93) (94, 89) (94, 85) (94,
81) (94,
77) (94, 73) (94, 69) (94, 65) (94, 61) (94, 57) (94, 53) (94, 49) (94,
45)
(94, 41) (94, 37) (94, 33) (94, 445) (94, 441) (94, 437) (94, 433) (94,
429)
(94, 425) (94, 421) (94, 417) (94, 413) (94, 409) (94, 405) (94, 401)
(94, 397)
(94, 393) (94, 389) (94, 385) (94, 381) (94, 377) (94, 373) (94, 369)
(94, 365)
(94, 361) (94, 357) (94, 353) (94, 349) (94, 345) (94, 341) (94, 337)
(94, 333)
(94, 329) (94, 325) (94, 321) (94, 317) (94, 313) (94, 309) (94, 305)
(94, 301)
(94, 297) (94, 293) (94, 289) (94, 285) (94, 281) (94, 277) (94, 273)
(94, 269)
(94, 265) (94, 261) (94, 257) (94, 253) (94, 249) (94, 245) (94, 241)
(94, 237)
(94, 233) (94, 229) (94, 225) (94, 221) (94, 217) (94, 213) (94, 209)
(94, 205)
(94, 201) (94, 197) (94, 193) (94, 189) (94, 185) (94, 181) (94, 177)
(94, 173)
(94, 169) (94, 165) (94, 161) (94, 157) (94, 153) (94, 149) (94, 145)
(94, 141)
(94, 137) (94, 133) (94, 129) (94, 125) (94, 121) (94, 117) (94, 113) ('
Mar 11 14:55:35 example.org udevd-work[2733]: ressize 1024 too short

Is there a reason for which result is limited to 1024? I know is not
usual that result will be bigger then 1024, but there are conditions
in which this issue can be reproduced.

Simple fix would be to increase the size of result to, for example
UTIL_LINE_SIZE:
#define UTIL_LINE_SIZE                     16384

diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index 47bde61..56406e5 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -2027,7 +2027,7 @@ int udev_rules_apply_to_event(struct udev_rules
*rules, struct udev_event *event case TK_M_PROGRAM: {
                         char program[UTIL_PATH_SIZE];
                         char **envp;
-                        char result[UTIL_PATH_SIZE];
+                        char result[UTIL_LINE_SIZE];
 
                         free(event->program_result);
                         event->program_result = NULL;



-- 
Robert Milasan

L3 Support Engineer
SUSE Linux (http://www.suse.com)
email: rmilasan at suse.com
GPG fingerprint: B6FE F4A8 0FA3 3040 3402  6FE7 2F64 167C 1909 6D1A


More information about the systemd-devel mailing list