Hello community,

here is the log from the commit of package systemd for openSUSE:Factory checked 
in at 2017-03-15 01:04:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/systemd (Old)
 and      /work/SRC/openSUSE:Factory/.systemd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "systemd"

Wed Mar 15 01:04:11 2017 rev:251 rq:477902 version:232

Changes:
--------
--- /work/SRC/openSUSE:Factory/systemd/systemd-mini.changes     2017-03-08 
00:38:27.888064028 +0100
+++ /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes        
2017-03-15 01:59:36.282188781 +0100
@@ -1,0 +2,10 @@
+Tue Mar  7 09:22:30 UTC 2017 - [email protected]
+
+- Import commit 68fc0a749a83d16d4cde8471d5030bc6254ffd96
+
+  76d4d05fb udev: fix variable assignment
+  473df8cc4 udev-rules: perform whitespace replacement for symlink subst 
values (bsc#1025886)
+  d6c3ff647 udev-event: add replace_whitespace param to udev_event_apply_format
+  30ad15f7c libudev-util: change util_replace_whitespace to return number of 
chars in dest
+
+-------------------------------------------------------------------
systemd.changes: same change

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
systemd.spec: same change
++++++ systemd-232.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/systemd-232/src/libudev/libudev-util.c 
new/systemd-232/src/libudev/libudev-util.c
--- old/systemd-232/src/libudev/libudev-util.c  2017-03-03 17:19:36.000000000 
+0100
+++ new/systemd-232/src/libudev/libudev-util.c  2017-03-07 10:19:41.000000000 
+0100
@@ -186,7 +186,7 @@
                 to[j++] = str[i++];
         }
         to[j] = '\0';
-        return 0;
+        return j;
 }
 
 /* allow chars in whitelist, plain ascii, hex-escaping and valid utf8 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/systemd-232/src/udev/udev-event.c 
new/systemd-232/src/udev/udev-event.c
--- old/systemd-232/src/udev/udev-event.c       2017-03-03 17:19:36.000000000 
+0100
+++ new/systemd-232/src/udev/udev-event.c       2017-03-07 10:19:41.000000000 
+0100
@@ -73,7 +73,9 @@
         free(event);
 }
 
-size_t udev_event_apply_format(struct udev_event *event, const char *src, char 
*dest, size_t size) {
+size_t udev_event_apply_format(struct udev_event *event,
+                               const char *src, char *dest, size_t size,
+                               bool replace_whitespace) {
         struct udev_device *dev = event->dev;
         enum subst_type {
                 SUBST_UNKNOWN,
@@ -130,8 +132,10 @@
 
         for (;;) {
                 enum subst_type type = SUBST_UNKNOWN;
-                char attrbuf[UTIL_PATH_SIZE];
-                char *attr = NULL;
+                char attrbuf[UTIL_PATH_SIZE], sbuf[UTIL_PATH_SIZE];
+                char *attr = NULL, *_s;
+                size_t _l;
+                bool replws = replace_whitespace;
 
                 while (from[0] != '\0') {
                         if (from[0] == '$') {
@@ -200,6 +204,19 @@
                         attr = NULL;
                 }
 
+                /* result subst handles space as field separator */
+                if (type == SUBST_RESULT)
+                        replws = false;
+
+                if (replws) {
+                        /* store dest string ptr and remaining len */
+                        _s = s;
+                        _l = l;
+                        /* temporarily use sbuf */
+                        s = sbuf;
+                        l = UTIL_PATH_SIZE;
+                }
+
                 switch (type) {
                 case SUBST_DEVPATH:
                         l = strpcpy(&s, l, udev_device_get_devpath(dev));
@@ -380,6 +397,20 @@
                         log_error("unknown substitution type=%i", type);
                         break;
                 }
+
+                /* replace whitespace in sbuf and copy to dest */
+                if (replws) {
+                        size_t tmplen = UTIL_PATH_SIZE - l;
+
+                        /* restore s and l to dest string values */
+                        s = _s;
+                        l = _l;
+
+                        /* copy ws-replaced value to s */
+                        tmplen = util_replace_whitespace(sbuf, s, MIN(tmplen, 
l));
+                        l -= tmplen;
+                        s += tmplen;
+                }
         }
 
 out:
@@ -927,7 +958,7 @@
                 const char *cmd = udev_list_entry_get_name(list_entry);
                 enum udev_builtin_cmd builtin_cmd = 
udev_list_entry_get_num(list_entry);
 
-                udev_event_apply_format(event, cmd, command, sizeof(command));
+                udev_event_apply_format(event, cmd, command, sizeof(command), 
false);
 
                 if (builtin_cmd < UDEV_BUILTIN_MAX)
                         udev_builtin_run(event->dev, builtin_cmd, command, 
false);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/systemd-232/src/udev/udev-rules.c 
new/systemd-232/src/udev/udev-rules.c
--- old/systemd-232/src/udev/udev-rules.c       2017-03-03 17:19:36.000000000 
+0100
+++ new/systemd-232/src/udev/udev-rules.c       2017-03-07 10:19:41.000000000 
+0100
@@ -1676,7 +1676,7 @@
         name = rules_str(rules, cur->key.attr_off);
         switch (cur->key.attrsubst) {
         case SB_FORMAT:
-                udev_event_apply_format(event, name, nbuf, sizeof(nbuf));
+                udev_event_apply_format(event, name, nbuf, sizeof(nbuf), 
false);
                 name = nbuf;
                 /* fall through */
         case SB_NONE:
@@ -1838,7 +1838,7 @@
                         _cleanup_free_ char *value = NULL;
                         size_t len;
 
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.attr_off), filename, sizeof(filename));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.attr_off), filename, sizeof(filename), false);
                         sysctl_normalize(filename);
                         if (sysctl_read(filename, &value) < 0)
                                 goto nomatch;
@@ -1916,7 +1916,7 @@
                         struct stat statbuf;
                         int match;
 
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), filename, sizeof(filename));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), filename, sizeof(filename), false);
                         if (util_resolve_subsys_kernel(event->udev, filename, 
filename, sizeof(filename), 0) != 0) {
                                 if (filename[0] != '/') {
                                         char tmp[UTIL_PATH_SIZE];
@@ -1942,7 +1942,7 @@
                         char result[UTIL_LINE_SIZE];
 
                         event->program_result = mfree(event->program_result);
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), program, sizeof(program));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), program, sizeof(program), false);
                         log_debug("PROGRAM '%s' %s:%u",
                                   program,
                                   rules_str(rules, rule->rule.filename_off),
@@ -1969,7 +1969,7 @@
                 case TK_M_IMPORT_FILE: {
                         char import[UTIL_PATH_SIZE];
 
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), import, sizeof(import));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), import, sizeof(import), false);
                         if (import_file_into_properties(event->dev, import) != 
0)
                                 if (cur->key.op != OP_NOMATCH)
                                         goto nomatch;
@@ -1978,7 +1978,7 @@
                 case TK_M_IMPORT_PROG: {
                         char import[UTIL_PATH_SIZE];
 
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), import, sizeof(import));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), import, sizeof(import), false);
                         log_debug("IMPORT '%s' %s:%u",
                                   import,
                                   rules_str(rules, rule->rule.filename_off),
@@ -2009,7 +2009,7 @@
                                 event->builtin_run |= (1 << 
cur->key.builtin_cmd);
                         }
 
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), command, sizeof(command));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), command, sizeof(command), false);
                         log_debug("IMPORT builtin '%s' %s:%u",
                                   udev_builtin_name(cur->key.builtin_cmd),
                                   rules_str(rules, rule->rule.filename_off),
@@ -2077,7 +2077,7 @@
                 case TK_M_IMPORT_PARENT: {
                         char import[UTIL_PATH_SIZE];
 
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), import, sizeof(import));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), import, sizeof(import), false);
                         if (import_parent_into_properties(event->dev, import) 
!= 0)
                                 if (cur->key.op != OP_NOMATCH)
                                         goto nomatch;
@@ -2115,7 +2115,7 @@
                                 break;
                         if (cur->key.op == OP_ASSIGN_FINAL)
                                 event->owner_final = true;
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), owner, sizeof(owner));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), owner, sizeof(owner), false);
                         event->owner_set = true;
                         r = get_user_creds(&ow, &event->uid, NULL, NULL, NULL);
                         if (r < 0) {
@@ -2141,7 +2141,7 @@
                                 break;
                         if (cur->key.op == OP_ASSIGN_FINAL)
                                 event->group_final = true;
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), group, sizeof(group));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), group, sizeof(group), false);
                         event->group_set = true;
                         r = get_group_creds(&gr, &event->gid);
                         if (r < 0) {
@@ -2165,7 +2165,7 @@
 
                         if (event->mode_final)
                                 break;
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), mode_str, sizeof(mode_str));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), mode_str, sizeof(mode_str), false);
                         mode = strtol(mode_str, &endptr, 8);
                         if (endptr[0] != '\0') {
                                 log_error("ignoring invalid mode '%s'", 
mode_str);
@@ -2222,7 +2222,7 @@
                         const char *name, *label;
 
                         name = rules_str(rules, cur->key.attr_off);
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), label_str, sizeof(label_str));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), label_str, sizeof(label_str), false);
                         if (label_str[0] != '\0')
                                 label = label_str;
                         else
@@ -2256,10 +2256,10 @@
                                 char temp[UTIL_NAME_SIZE];
 
                                 /* append value separated by space */
-                                udev_event_apply_format(event, value, temp, 
sizeof(temp));
+                                udev_event_apply_format(event, value, temp, 
sizeof(temp), false);
                                 strscpyl(value_new, sizeof(value_new), 
value_old, " ", temp, NULL);
                         } else
-                                udev_event_apply_format(event, value, 
value_new, sizeof(value_new));
+                                udev_event_apply_format(event, value, 
value_new, sizeof(value_new), false);
 
                         udev_device_add_property(event->dev, name, value_new);
                         break;
@@ -2268,7 +2268,7 @@
                         char tag[UTIL_PATH_SIZE];
                         const char *p;
 
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), tag, sizeof(tag));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), tag, sizeof(tag), false);
                         if (cur->key.op == OP_ASSIGN || cur->key.op == 
OP_ASSIGN_FINAL)
                                 udev_device_cleanup_tags_list(event->dev);
                         for (p = tag; *p != '\0'; p++) {
@@ -2296,7 +2296,7 @@
                                 break;
                         if (cur->key.op == OP_ASSIGN_FINAL)
                                 event->name_final = true;
-                        udev_event_apply_format(event, name, name_str, 
sizeof(name_str));
+                        udev_event_apply_format(event, name, name_str, 
sizeof(name_str), false);
                         if (esc == ESCAPE_UNSET || esc == ESCAPE_REPLACE) {
                                 count = util_replace_chars(name_str, "/");
                                 if (count > 0)
@@ -2336,7 +2336,7 @@
                                 udev_device_cleanup_devlinks_list(event->dev);
 
                         /* allow  multiple symlinks separated by spaces */
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), temp, sizeof(temp));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), temp, sizeof(temp), esc != ESCAPE_NONE);
                         if (esc == ESCAPE_UNSET)
                                 count = util_replace_chars(temp, "/ ");
                         else if (esc == ESCAPE_REPLACE)
@@ -2376,7 +2376,7 @@
                                 strscpyl(attr, sizeof(attr), 
udev_device_get_syspath(event->dev), "/", key_name, NULL);
                         attr_subst_subdir(attr, sizeof(attr));
 
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), value, sizeof(value));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), value, sizeof(value), false);
                         log_debug("ATTR '%s' writing '%s' %s:%u", attr, value,
                                   rules_str(rules, rule->rule.filename_off),
                                   rule->rule.filename_line);
@@ -2392,9 +2392,9 @@
                         char value[UTIL_NAME_SIZE];
                         int r;
 
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.attr_off), filename, sizeof(filename));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.attr_off), filename, sizeof(filename), false);
                         sysctl_normalize(filename);
-                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), value, sizeof(value));
+                        udev_event_apply_format(event, rules_str(rules, 
cur->key.value_off), value, sizeof(value), false);
                         log_debug("SYSCTL '%s' writing '%s' %s:%u", filename, 
value,
                                   rules_str(rules, rule->rule.filename_off), 
rule->rule.filename_line);
                         r = sysctl_write(filename, value);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/systemd-232/src/udev/udev.h 
new/systemd-232/src/udev/udev.h
--- old/systemd-232/src/udev/udev.h     2017-03-03 17:19:36.000000000 +0100
+++ new/systemd-232/src/udev/udev.h     2017-03-07 10:19:41.000000000 +0100
@@ -80,7 +80,9 @@
 /* udev-event.c */
 struct udev_event *udev_event_new(struct udev_device *dev);
 void udev_event_unref(struct udev_event *event);
-size_t udev_event_apply_format(struct udev_event *event, const char *src, char 
*dest, size_t size);
+size_t udev_event_apply_format(struct udev_event *event,
+                               const char *src, char *dest, size_t size,
+                               bool replace_whitespace);
 int udev_event_apply_subsys_kernel(struct udev_event *event, const char 
*string,
                                    char *result, size_t maxsize, int 
read_value);
 int udev_event_spawn(struct udev_event *event,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/systemd-232/src/udev/udevadm-test.c 
new/systemd-232/src/udev/udevadm-test.c
--- old/systemd-232/src/udev/udevadm-test.c     2017-03-03 17:19:36.000000000 
+0100
+++ new/systemd-232/src/udev/udevadm-test.c     2017-03-07 10:19:41.000000000 
+0100
@@ -144,7 +144,7 @@
         udev_list_entry_foreach(entry, udev_list_get_entry(&event->run_list)) {
                 char program[UTIL_PATH_SIZE];
 
-                udev_event_apply_format(event, 
udev_list_entry_get_name(entry), program, sizeof(program));
+                udev_event_apply_format(event, 
udev_list_entry_get_name(entry), program, sizeof(program), false);
                 printf("run: '%s'\n", program);
         }
 out:


Reply via email to