This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Mark Brown <bmark@us.ibm.com> writes: > Andreas Jaeger wrote on 22/09/01 8:43 AM: > > The following program: >> long int res = ulimit (2, -1); >> Res: 0, errno: Success >> >> which is wrong, setting the limit to -1 should IMO give an error. The >> problem is that in ulimit.c we tread the second argument as long int >> and assign it to: >> limit.rlim_cur = newlimit * 512; >> where rlim_cur is of type rlim_t which is unsigned long. Shouldn't we >> check for negative values and set errno to EINVAL in this case? I'm >> appending a patch. > > Here is selected text of the standard: > ----- > UL_SETFSIZE Set the file size limit for output operations of the process > to the value of the second argument, taken as a long, multiplied by 512. > If the result would overflow an rlim_t, the actual value set is > unspecified. Any process may decrease its own limit, but only a process > with appropriate privileges may increase the limit. The return value > shall be the integer part of the new file size limit divided by 512. > > [EINVAL] The cmd argument is not valid. > > ---- > > So, you can't use EINVAL for a bad second argument. That's what I feared and why I asked for double checking with the standards. > But you *can* set the result to be what you consider correct upon > detecting something that would "overflow an rlim_t". > > The suggested patch does not meet standards. What handling would meet the standards? And is -1 really an overflow? Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |