[bug] printing zero size files
Denys Vlasenko
vda.linux at googlemail.com
Sat Apr 28 08:58:18 UTC 2012
On Fri, Apr 27, 2012 at 3:25 PM, walter harms <wharms at bfs.de> wrote:
>>>>>> touch null
>>>>>> lpr null <- never returns
>>>>>
>>>>> Can't reproduce.
>>>>>
>>>>> Please strace it.
>>>>
>>>> Hello Denis,
>>>> can you reproduce it using "lpr -Plp at remote null" ?
>>>>
>>>> from strace:
>>>> ...
>>>> read(3, "\0", 1) = 1
>>>> write(3, "\0", 1) = 1
>>>> read(3, 0x7ffff39a19b0, 1) = ? ERESTARTSYS (To be restarted) <!-- last before SIGINT ->
BTW, can you send a larger strace log fragment?
>> It looks ok. We sent zero bytes of the file,
>> then sent NUL byte as end-of-file indicator,
>> and we wait for remote host to ACK or NAK it.
>>
>>> When i add a file size check it seems to work.
>>>
>>> the problem is located here:
>>> static void get_response_or_say_and_die(int fd, const char *errmsg)
>>> {
>>> ssize_t sz;
>>> char buf[128];
>>>
>>> buf[0] = ' ';
>>> sz = safe_read(fd, buf, 1); <-- never returns
>>>
>>> i do not know the lpr specs but i guess a file size of 0 is not permitted.
>>
>> I didn't find any such restriction. Zero byte file is ok
>> (it does not make much sense, but is valid).
>>
>> I think you lpd server is just buggy.
>
> would it hurt to prevent zero sized files to be send ?
> at least the lpr version i tested reject zero size files.
It does not reject them. It simply does not send ANY response,
positive or negative. This looks like a bug.
What next, reject print jobs which contain only whitespace?
> lpr zero (CUPS version)
> lpr: No file!?!
Can you send a strace log of this command?
--
vda
More information about the busybox
mailing list