DJ Lucas wrote:
> On 01/22/2012 10:43 AM, Bruce Dubbs wrote:
>> Dean Takemori wrote:
>>> lfs/lib/services/init-functions defines statusproc() with this snippit
>>> to process arguments:
>>>
>>> while true; do
>>> case "${1}" in
>>>
>>> -p)
>>> pidfile="${2}"
>>> shift 2
>>> ;;
>>> esac
>>> done
>>>
>>>
>>> Isn't this broken?
>> What's broken? Can you give an example of how it breaks?
> I think this might carry over from the original so the problem dates
> back to me or possibly even Nathan and Alex. I didn't look. At any rate,
> the problem is that there is no error checking. I don't believe that
> statusproc() is intended to check multiple processes from multiple
> executables (multiple processes from one executable yes). For the -p
> case, you should verify that $2 is a valid file, and that $3 is
> executable or undefined, and add a * case, that $1 is executable and $2
> = "-p" && shift 1;. If any of the above are false, a return value of 2
> should fit the LSB spec with optional error message "Error: invalid or
> excessive argument(s)". A case could be made that $3 in the -p case or
> $1 in the * case not being executable should return a value of 5, but
> I'm not sure that value should apply here. I didn't look to see if the
> executable is evaluated later in the function, but the function should
> most definitely have argument handling for excessive arguments in the
> while loop.
>
> http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
I still don't understand what is broken. In every place statusproc is
called, it is from the user running '/etc/init.d/service status'. The
maximum harm would be that the wrong thing is displayed, but only
postfix and swat specify a -p parameter.
Until we establish what is broken, I am not in favor of making any changes.
-- Bruce
--
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page