]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: rewrite token_match_attr() to make it easier for Coverity to understand
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 11 Jun 2024 16:16:55 +0000 (01:16 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 11 Jun 2024 23:07:33 +0000 (00:07 +0100)
No functional change.

Closes CID#1469719.

src/udev/udev-rules.c

index 581bbaf345904cd6ae8da44b4bc8ac6a2a77a9b1..366f7ba92cdeac39109cebec10fa0da00435b652 100644 (file)
@@ -1771,27 +1771,28 @@ static bool token_match_attr(UdevRuleToken *token, sd_device *dev, UdevEvent *ev
         case SUBST_TYPE_PLAIN:
                 if (sd_device_get_sysattr_value(dev, name, &value) < 0)
                         return false;
-                break;
+
+                /* remove trailing whitespace, if not asked to match for it */
+                if (token->attr_match_remove_trailing_whitespace) {
+                        strscpy(vbuf, sizeof(vbuf), value);
+                        value = delete_trailing_chars(vbuf, NULL);
+                }
+
+                return token_match_string(token, value);
+
         case SUBST_TYPE_SUBSYS:
                 if (udev_resolve_subsys_kernel(name, vbuf, sizeof(vbuf), true) < 0)
                         return false;
-                value = vbuf;
-                break;
-        default:
-                assert_not_reached();
-        }
 
-        /* remove trailing whitespace, if not asked to match for it */
-        if (token->attr_match_remove_trailing_whitespace) {
-                if (value != vbuf) {
-                        strscpy(vbuf, sizeof(vbuf), value);
-                        value = vbuf;
-                }
+                /* remove trailing whitespace, if not asked to match for it */
+                if (token->attr_match_remove_trailing_whitespace)
+                        delete_trailing_chars(vbuf, NULL);
 
-                delete_trailing_chars(vbuf, NULL);
-        }
+                return token_match_string(token, vbuf);
 
-        return token_match_string(token, value);
+        default:
+                assert_not_reached();
+        }
 }
 
 static int get_property_from_string(char *line, char **ret_key, char **ret_value) {