Skip to contentSkip to conversation

lsmod path hardcoded in v4l/Makefile

PATCH Matthias Schwarzott 5 participants 11 messages Jun 22, 2009 – Jul 28, 2009 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

Hi list!

It seems the path to lsmod tool is hardcoded in the Makefile for out-of-tree building of v4l-dvb.
Now at least gentoo has moved lsmod from /sbin to /bin. Additionally it is bad style (or at least I am told so), to not rely on $PATH but hardcode pathes for tools that should be in $PATH.

So the attached patch removes the hardcoded /sbin from the lsmod call.

Regards
Matthias

v4l/Makefile +1 -1
diff -r 65ec132f20df v4l/Makefile
@@ -196,7 +196,7 @@
   inst-m	:= $(obj-m)
 endif
 
-v4l_modules := $(shell /sbin/lsmod|cut -d' ' -f1 ) $(patsubst %.ko,%,$(inst-m))
+v4l_modules := $(shell lsmod|cut -d' ' -f1 ) $(patsubst %.ko,%,$(inst-m))
 
 #################################################
 # locales seem to cause trouble sometimes.
#1 lore raw
Quoted 7 lines · Matthias Schwarzott

Hi list!

It seems the path to lsmod tool is hardcoded in the Makefile for out-of-tree building of v4l-dvb.
Now at least gentoo has moved lsmod from /sbin to /bin. Additionally it is bad style (or at least I am told so), to not rely on $PATH but hardcode pathes for tools that should be in $PATH.

It's a potential security hole to rely on $PATH instead of absolute paths when running a command as root.

Since many of the commnads in the Makefile rely on $PATH, including executions of 'install' which usually would be run as root, I suppose secuirty concerns don't matter.

-Andy

Quoted 6 lines

So the attached patch removes the hardcoded /sbin from the lsmod call.

Regards
Matthias

#2 lore raw
Quoted 6 lines · Andy Walls
Quoted 5 lines · Matthias Schwarzott

Hi list!

It seems the path to lsmod tool is hardcoded in the Makefile for out-of-tree building of v4l-dvb.
Now at least gentoo has moved lsmod from /sbin to /bin.

Won't your patch cause breakage for everyone who hasn't moved lsmod from /sbin and doesn't have sbin in the path? Which was, and perhaps still is, the most common situation? It would be better to do something that does not break things that used to work.

Quoted 24 lines
Quoted 2 lines

Additionally it is bad style (or at least I am told so), to not rely on $PATH but hardcode pathes for tools that should be in $PATH.

It's a potential security hole to rely on $PATH instead of absolute paths when running a command as root.

Since many of the commnads in the Makefile rely on $PATH, including executions of 'install' which usually would be run as root, I suppose secuirty concerns don't matter.

-Andy

Quoted 6 lines

So the attached patch removes the hardcoded /sbin from the lsmod call.

Regards
Matthias

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#3 lore raw
Quoted 4 lines · Trent Piepho
Quoted 3 lines · Andy Walls
Quoted 2 lines · Matthias Schwarzott

Hi list!

Quoted 8 lines
Quoted 3 lines
Quoted 3 lines

It seems the path to lsmod tool is hardcoded in the Makefile for out-of-tree building of v4l-dvb.
Now at least gentoo has moved lsmod from /sbin to /bin.

Won't your patch cause breakage for everyone who hasn't moved lsmod from /sbin and doesn't have sbin in the path? Which was, and perhaps still is, the most common situation? It would be better to do something that does not break things that used to work.

root without sbin in path is bad and broken, isn't it? If you really think this is too common, we could add PATH=/sbin:/bin:$PATH
at the start of the Makefile.

Regards
Matthias

#4 lore raw
In reply to Andy Walls
Quoted 6 lines · Andy Walls
Quoted 5 lines · Matthias Schwarzott

Hi list!

It seems the path to lsmod tool is hardcoded in the Makefile for out-of-tree building of v4l-dvb.
Now at least gentoo has moved lsmod from /sbin to /bin.

Sorry, but is it considered impertinent to ask why that lsmod should be moved from /sbin (system binaries, and lsmod certainly is one of those) and stick it into /bin instead? Is there any cogent reason for doing a thing like that, which may have escaped my attention? Unless one is making some very small distro for some very small hardware and (say) one of /bin and /sbin is symlinked to the other, I find a change like that to be extremely puzzling. So, really. Why?

Theodore Kilgore

#5 lore raw
Quoted 11 lines · Theodore Kilgore
Quoted 6 lines · Andy Walls
Quoted 5 lines · Matthias Schwarzott

Hi list!

It seems the path to lsmod tool is hardcoded in the Makefile for out-of-tree building of v4l-dvb.
Now at least gentoo has moved lsmod from /sbin to /bin.

Sorry, but is it considered impertinent to ask why that lsmod should be moved from /sbin (system binaries, and lsmod certainly is one of those) and stick it into /bin instead? Is there any cogent reason for doing a

/sbin are binaries that only root should use. But lsmod can be used by users, too.
Suse also has only /bin/lsmod I think.
I don't know too much about the reason for the move, but it was long ago - version 0.9.11 contained that move and was released around year 2003. Gentoo ebuild added /sbin/lsmod as compat symlink for things still hardcoding the path, but that was removed 2009 - 6 years should be enough.

Quoted 4 lines

thing like that, which may have escaped my attention? Unless one is making some very small distro for some very small hardware and (say) one of /bin and /sbin is symlinked to the other, I find a change like that to be extremely puzzling. So, really. Why?

For a real answer to "why", do ask module-init-tools maintainer.

Regards
Matthias

#6 lore raw
In reply to Andy Walls
Quoted 11 lines · Andy Walls
Quoted 7 lines · Matthias Schwarzott

Hi list!

It seems the path to lsmod tool is hardcoded in the Makefile for out-of-tree building of v4l-dvb.
Now at least gentoo has moved lsmod from /sbin to /bin. Additionally it is bad style (or at least I am told so), to not rely on $PATH but hardcode pathes for tools that should be in $PATH.

It's a potential security hole to rely on $PATH instead of absolute paths when running a command as root.

Shouldn't $PATH of root be considered safe? Else the distro or the system setup is doing something worse, and can't be improved by using fixed pathes in some scripts and Makefiles.

Regards
Matthias

#7 lore raw
Quoted 5 lines · Matthias Schwarzott
Quoted 4 lines · Matthias Schwarzott
Quoted 2 lines

It seems the path to lsmod tool is hardcoded in the Makefile for out-of-tree building of v4l-dvb.

Shouldn't $PATH of root be considered safe? Else the distro or the system

I believe make will set the variable whenever the makefile is used, even when building as non-root.

It turns out that it was just lsmod with no path originally, but Michael Krufky changed it back in 2005 (commit b0e7b40744ef) to have a hardcoded path. Then later in commit c91e7f84a1d6 the only use of 'v4l_modules' was deleted, so we can just delete this line and not worry about sbin and paths.

Mauro,

Please pull from http://linuxtv.org/hg/~tap/fix

for the following changeset:

build: Remove module list cruft
http://linuxtv.org/hg/~tap/fix?cmd=changeset;node=fb228bb1ad9f

#8 lore raw
Quoted 16 lines · Trent Piepho
Quoted 5 lines · Matthias Schwarzott
Quoted 3 lines · Matthias Schwarzott
Quoted 2 lines

It seems the path to lsmod tool is hardcoded in the Makefile for out-of-tree building of v4l-dvb.

Shouldn't $PATH of root be considered safe? Else the distro or the system

I believe make will set the variable whenever the makefile is used, even when building as non-root.

It turns out that it was just lsmod with no path originally, but Michael Krufky changed it back in 2005 (commit b0e7b40744ef) to have a hardcoded path. Then later in commit c91e7f84a1d6 the only use of 'v4l_modules' was deleted, so we can just delete this line and not worry about sbin and paths.

Quoted 8 lines

Mauro,

Please pull from http://linuxtv.org/hg/~tap/fix

for the following changeset:

build: Remove module list cruft
http://linuxtv.org/hg/~tap/fix?cmd=changeset;node=fb228bb1ad9f

Hi Mauro!

is there any reason to not pull this besides time?

Regards
Matthias

#9 lore raw

Em Tue, 21 Jul 2009 09:14:36 +0200
Matthias Schwarzott <[email protected]> escreveu:

Quoted 3 lines

Hi Mauro!

is there any reason to not pull this besides time?

Time is one reason, however, there's another:

It is not a good idea to run as root. Most people compile everything with a normal user and then use "sudo" command to install/remove/insert modules. Unfortunately, depending on the distribution, sudo inherits PATH from the normal user, instead of root. Due to that, if you replace it for just lsmod, it will fail for people that don't use gentoo.

Maybe good solution is to test if lsmod (and other similar tools) are at /sbin or /usr/sbin.

Alternatively, we can try to replace lsmod by something like (untested):

v4l_modules := $(shell PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin lsmod|cut -d' ' -f1 ) $(patsubst %.ko,%,$(inst-m))

Quoted 7 lines

Regards
Matthias
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Cheers,
Mauro

#10 lore raw
Quoted 8 lines · Mauro Carvalho Chehab

Em Tue, 21 Jul 2009 09:14:36 +0200
Matthias Schwarzott <[email protected]> escreveu:
It is not a good idea to run as root. Most people compile everything with a normal user and then use "sudo" command to install/remove/insert modules. Unfortunately, depending on the distribution, sudo inherits PATH from the normal user, instead of root. Due to that, if you replace it for just lsmod, it will fail for people that don't use gentoo.

Quoted 6 lines

Maybe good solution is to test if lsmod (and other similar tools) are at /sbin or /usr/sbin.

Alternatively, we can try to replace lsmod by something like (untested):

v4l_modules := $(shell PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin lsmod|cut -d' ' -f1 ) $(patsubst %.ko,%,$(inst-m))

Check my patch again, we can just delete the v4l_modules line as nothing uses it.