From: Kay Sievers Date: Mon, 4 Sep 2006 22:50:25 +0000 (+0200) Subject: fix ENV{TEST}="Test: $env{TEST}" X-Git-Tag: 174~2148 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=ac528431dd60c6b7f6b664ba430b937a11a32230 fix ENV{TEST}="Test: $env{TEST}" --- diff --git a/test/udev-test.pl b/test/udev-test.pl index 1117ecb40..464098fa6 100755 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -1245,6 +1245,19 @@ SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}="true" SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}=="yes", NAME="no" SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}=="true", NAME="true" SUBSYSTEMS=="scsi", KERNEL=="sda1", NAME="bad" +EOF + }, + { + desc => "ENV{} test (assign 2 times)", + subsys => "block", + devpath => "/block/sda/sda1", + exp_name => "true", + rules => <env.keys[i]; if (pair->key.operation == KEY_OP_ASSIGN) { + char temp_value[NAME_SIZE]; const char *key_name = key_pair_name(rule, pair); const char *value = key_val(rule, &pair->key); - char *key_value = name_list_key_add(&udev->env_list, key_name, value); + char *key_value; + + /* make sure we don't write to the same string we possibly read from */ + strlcpy(temp_value, value, sizeof(temp_value)); + udev_rules_apply_format(udev, temp_value, NAME_SIZE); + + key_value = name_list_key_add(&udev->env_list, key_name, temp_value); if (key_value == NULL) break; - udev_rules_apply_format(udev, key_value, NAME_SIZE); putenv(key_value); dbg("export ENV '%s'", key_value); }