Am 14.04.2011 23:44, schrieb dave reisner:
I posted what I thought was a valid solution on FS#23467 from stack overflow that seems to be a lot more sane and _much_ more maintainable. For those who weren't following the report, I suggested that we use the same fallback as /etc/fstab, which says to encode spaces with octal sequences. These can then be decoded using printf's %b flag. It requires only a simple change to the current parse_cmdline function.
I really don't understand what you mean (or how it would help). What you mentioned doesn't solve the initial problem of finding out which spaces separate arguments and which spaces are inside quoted strings.
It absolutely does because it eliminates spaces within variables, e.g. video=foo\040bar root=…
The whole point is that quotes aren't used. fstab sets precedent here so its not some wild and whacky new thing being introduced.
I'll have to recheck this.
If you check carefully, I use eval right here. There is nothing in the eval'ed strings that should cause trouble.
We'll have to agree to disagree here. The problem is that you can't know what eval is executing in this case because its unbounded and unchecked input.
The only thing I do is: eval ${lhs}=\${rhs} ${lhs} is only characters, numbers and underscores, and \${rhs} only evaluates to ${rhs}. I don't see a problem here.