GNU bug report logs -
#10305
coreutils-8.14, "rm -r" fails with EBADF
Previous Next
Full log
View this message in rfc822 format
On 02/19/2013 09:08 AM, Joachim Schmitz wrote:
>> -----Original Message-----
>> From: Joachim Schmitz [mailto:jojo <at> schmitz-digital.de]
>> Sent: Tuesday, February 19, 2013 9:18 AM
>> To: '10305 <at> debbugs.gnu.org'; 'bug-gnulib <at> gnu.org'
>> Subject: coreutils-8.21, some changes needed
>>
>> Hi folks
>>
>> In an attempt to port coreutils 8.21 to HP-NonStop I stumbled accross a couple problems, here are my fixes to them:
>>
>> Here another file needs to get adjusted to using the new root-uid.h
>>
>> diff -EBbu ./src/copy.c.orig ./src/copy.c
>> --- ./src/copy.c.orig 2013-02-07 03:37:05 -0600
>> +++ ./src/copy.c 2013-02-18 09:29:22 -0600
>> @@ -51,6 +51,7 @@
>> #include "ignore-value.h"
>> #include "ioblksize.h"
>> #include "quote.h"
>> +#include "root-uid.h"
>> #include "same.h"
>> #include "savedir.h"
>> #include "stat-size.h"
>> @@ -1127,7 +1128,7 @@
>> {
>> bool access_changed = false;
>>
>> - if (!(sb.st_mode & S_IWUSR) && geteuid () != 0)
>> + if (!(sb.st_mode & S_IWUSR) && geteuid () != ROOT_UID)
>> access_changed = fchmod_or_lchmod (dest_desc, dst_name, 0600) == 0;
>>
>> if (!copy_attr (src_name, source_desc, dst_name, dest_desc, x)
>> @@ -2718,7 +2719,7 @@
>> priv_freeset (pset);
>> }
>> #else
>> - x->chown_privileges = x->owner_privileges = (geteuid () == 0);
>> + x->chown_privileges = x->owner_privileges = (geteuid () == ROOT_UID);
>> #endif
>> }
I'll apply this in your name.
>> On HP-NonStop we use 0x80000000 instead of -1 for getuid(), getgid() and friends to indicate NO_UID rsp. NO_GID
>> Guess that difference could go into gnulibs root-uid.h?
You could wrap get[gu]id() to return -1 in that case,
or alternatively define NO_UID and NO_GID in root-uid.h
and use that everywhere. Probably the easiest approach
for coreutils at least since it already users NO_GID since:
http://bugs.gnu.org/10021
Though I note that root-uid.h would be an inaccurate
name if we did that.
BTW, Is 0 a valid "non root" user id on nonstop?
If not then we could use the wrapper approach to
hide the ROOT_UID issue also.
In the meantime we should at least document these differences
in gnulib in doc/posix-functions/getuid.texi.
>> Such a change would affect coreutils in ...src/{groups,id,install,test,whoami}.c (in addition to root-uid.h of course)
>>
>> Here two trailing _ seem missing?
>>
>> diff -EBbu ./src/numfmt.c.orig ./src/numfmt.c
>> --- ./src/numfmt.c.orig 2013-02-14 08:49:30 -0600
>> +++ ./src/numfmt.c 2013-02-18 10:58:27 -0600
>> @@ -1195,7 +1195,7 @@
>> Returns a pointer to the *delimiter* of the requested field,
>> or a pointer to NUL (if reached the end of the string). */
>> static inline char *
>> -__attribute ((pure))
>> +__attribute__ ((pure))
Oops. I'll fix this up with a more extensive patch in coreutils.
Thanks,
Pádraig.
This bug report was last modified 12 years and 110 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.