On 2/21/23 18:06, Eric Blake wrote:
> On Tue, Feb 21, 2023 at 12:55:49PM +0100, Laszlo Ersek wrote:
>> On 2/15/23 23:28, Eric Blake wrote:
>>> On Wed, Feb 15, 2023 at 03:11:38PM +0100, Laszlo Ersek wrote:
>>>> execvp() [01] is powerful:
>>>
>>> You KNOW this is going to be a juicy commit message when the first
>>> line contains a 2-digit footnote ;)
>>
>> Haha, yes :) Clearly I originally started the commit message with
>> single-digit footnotes, but I ended up needing another digit :)
> 
> Trimming my responses to just your open questions...

Sorry, I should have been trimming too.

>>> [1] And this simplifies if empty PATH can imply searching in ".".
>>
>> If we ever get practical problems with PATH="", let's update the code
>> then, incrementally.
> 
> Indeed.  No need to fret about a corner case that no one will hit; or
> if they can prove that it matters, it's an easy incremental patch at
> that time.

Well, given Daniel's comments meanwhile, it seems like the original
execvp() is something we shouldn't fret about. :/

> Again agreed - any user desperate enough to pass in an atypical binary
> name or put atypical relative directory names in PATH gets what they
> deserve; as long as we don't think our code misbehaving on argv[0] of
> "+s" can be abused as a security hole, then not worrying about the
> corner case in our code is just fine for this patch, and an
> incremental patch on top if we can think of why it is
> security-sensitive after all.

Can you please elaborate on "+s"? (I'd like to understand your point
regardless of this patch, too.)

>> How does "//binary" differ from "/binary", in pathname resolution?
> 
> POSIX intentionally says that file names beginning with leading "//"
> but not "///" have implementation-defined semantics.  Linux's
> definition is that "//" is a synonym for "/", so it makes no
> difference there.  But on Cygwin, "/machine" is a file (or directory)
> living in the root directory, while "//machine/share" is a network
> share access path that locates the shared resource "share" on
> network-addressable "machine" (think Windows \\MACHINE\SHARE syntax).
> Native windows does not let you access bare \\ or \\MACHINE, but
> Cygwin has further generalized those so that "ls //" shows you a list
> of all machines currently advertising shares in your local subnet (do
> not try it on a large enterprise subnet - it can take a LOONG time).
> Cygwin also defaults to having "/cygdrive/c" be a synonym to Windows
> C:\, but has an option for you to re-spell it as "//c" (that is,
> expose all of your drive letters the same as remote-access machines by
> setting the cygdrive prefix to empty instead of "cygdrive").

Ah, found it:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13

"""
If a pathname begins with two successive <slash> characters, the first
component following the leading <slash> characters may be interpreted in
an implementation-defined manner, although more than two leading <slash>
characters shall be treated as a single <slash> character.
"""

(... I wanted to say that "there's no replacement for reading POSIX in
full", but now I'm wondering if reading POSIX *at all* makes sense...)

> And thanks again for a detailed commit message and code comments for
> something that would otherwise be hard to maintain if we didn't have
> strong rationale for why we are doing it.

... That rationale may just have fallen away.

Laszlo

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to