run-parts: permit dot later in file name
See https://gist.github.com/andyshinn/3ae01fa13cb64c9d36e7#gistcomment-2044506 To test: mkdir /tmp/testrp printf "#!/bin/sh\necho test\n" > /tmp/testrp/test.sh chmod a+x /tmp/testrp/* busybox run-parts /tmp/testrp test mv /tmp/testrp/test.sh /tmp/testrp/.test.sh busybox run-parts /tmp/testrp # no output function old new delta act 190 200 +10 Signed-off-by: Ján Sáreník <jajomojo@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
947a22b332
commit
8c1f8aa016
@ -113,13 +113,24 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* Is this a valid filename (upper/lower alpha, digits,
|
/* Is this a valid filename (upper/lower alpha, digits,
|
||||||
* underscores, and hyphens only?)
|
* underscores, hyphens, and non-leading dots only?)
|
||||||
*/
|
*/
|
||||||
static bool invalid_name(const char *c)
|
static bool invalid_name(const char *c)
|
||||||
{
|
{
|
||||||
c = bb_basename(c);
|
c = bb_basename(c);
|
||||||
|
|
||||||
while (*c && (isalnum(*c) || *c == '_' || *c == '-'))
|
if (*c == '.')
|
||||||
|
return *c;
|
||||||
|
|
||||||
|
/* Debian run-parts 4.8.3, manpage:
|
||||||
|
* "...the names must consist entirely of ASCII letters,
|
||||||
|
* ASCII digits, ASCII underscores, and ASCII minus-hyphens.
|
||||||
|
* However, the name must not begin with a period."
|
||||||
|
* The last sentence is a giveaway that something is fishy
|
||||||
|
* (why mention leading dot if dots are not allowed anyway?).
|
||||||
|
* Yes, you guessed it right: in fact non-leading dots ARE allowed.
|
||||||
|
*/
|
||||||
|
while (isalnum(*c) || *c == '_' || *c == '-' || *c == '.')
|
||||||
c++;
|
c++;
|
||||||
|
|
||||||
return *c; /* TRUE (!0) if terminating NUL is not reached */
|
return *c; /* TRUE (!0) if terminating NUL is not reached */
|
||||||
|
Loading…
Reference in New Issue
Block a user