Skip to content

Commit 0c3e091

Browse files
committed
modpost: remove incorrect code in do_eisa_entry()
This function contains multiple bugs after the following commits:  - ac55182 ("modpost: i2c aliases need no trailing wildcard")  - 6543bec ("mod/file2alias: make modalias generation safe for cross compiling") Commit ac55182 inserted the following code to do_eisa_entry():     else             strcat(alias, "*"); This is incorrect because 'alias' is uninitialized. If it is not NULL-terminated, strcat() could cause a buffer overrun. Even if 'alias' happens to be zero-filled, it would output: MODULE_ALIAS("*"); This would match anything. As a result, the module could be loaded by any unrelated uevent from an unrelated subsystem. Commit ac55182 introduced another bug.             Prior to that commit, the conditional check was:     if (eisa->sig[0]) This checked if the first character of eisa_device_id::sig was not '\0'. However, commit ac55182 changed it as follows:     if (sig[0]) sig[0] is NOT the first character of the eisa_device_id::sig. The type of 'sig' is 'char (*)[8]', meaning that the type of 'sig[0]' is 'char [8]' instead of 'char'. 'sig[0]' and 'symval' refer to the same address, which never becomes NULL. The correct conversion would have been:     if ((*sig)[0]) However, this if-conditional was meaningless because the earlier change in commit ac551828993e was incorrect. This commit removes the entire incorrect code, which should never have been executed. Fixes: ac55182 ("modpost: i2c aliases need no trailing wildcard") Fixes: 6543bec ("mod/file2alias: make modalias generation safe for cross compiling") Signed-off-by: Masahiro Yamada <[email protected]>
1 parent e2ff121 commit 0c3e091

File tree

1 file changed

+1
-4
lines changed

1 file changed

+1
-4
lines changed

scripts/mod/file2alias.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -809,10 +809,7 @@ static int do_eisa_entry(const char *filename, void *symval,
809809
char *alias)
810810
{
811811
DEF_FIELD_ADDR(symval, eisa_device_id, sig);
812-
if (sig[0])
813-
sprintf(alias, EISA_DEVICE_MODALIAS_FMT "*", *sig);
814-
else
815-
strcat(alias, "*");
812+
sprintf(alias, EISA_DEVICE_MODALIAS_FMT "*", *sig);
816813
return 1;
817814
}
818815

0 commit comments

Comments
 (0)