|
From: | Jacob Bachmeyer |
Subject: | Re: GCC reporting piped input as a security feature |
Date: | Fri, 12 Apr 2024 21:14:41 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.22) Gecko/20090807 MultiZilla/1.8.3.4e SeaMonkey/1.1.17 Mnenhy/0.7.6.0 |
Zack Weinberg wrote:
On Tue, Apr 9, 2024, at 11:35 PM, Jacob Bachmeyer wrote:Jan Engelhardt wrote:On Tuesday 2024-04-09 05:37, Jacob Bachmeyer wrote:In principle it could be posible to output something different to describe this stramge situation explicitly. For instance, output "via stdin" as a comment, or output `stdin/../filename' as the file name. (Programs that optimize the file name by deleting XXX/.../ are likely not to check whether XXX is a real directory.)... How about `/dev/stdin/-` if no filename has been specified with #line or whatever, and `/dev/stdin/[filename]` if one has, where [filename] is the specified filename with all leading dots and slashes stripped, falling back to `-` if empty? /dev/stdin can be relied on to either not exist or not be a directory, so these shouldn't ever be openable.
I like that idea, but would suggest expanding on it as "/dev/stdin/[working directory]//-" or "/dev/stdin/[working directory]//[full specified filename]". The double slash allows tools that care to parse out the specified filename, while the working directory preceding it provides a hint where to find that file if the specified filename is relative, but the kernel will collapse it to a single slash if a tool just passes the "[working directory]//[specified filename]" to open(2). Since the working directory should itself be an absolute name, there would typically be a double slash after the "/dev/stdin" prefix. Something like "/dev/stdin//var/cache/build/foopkg-1.0.0///usr/src/foopkg-1.0.0/special.c.m4" as an artificial example.
-- Jacob
[Prev in Thread] | Current Thread | [Next in Thread] |