Re: rpl_unlink sets errno to EPERM on malloc failure

2020-03-21 Thread Bruno Haible
Paul Eggert wrote:
--- a/lib/unlink.c
+++ b/lib/unlink.c
@@ -65,10 +65,7 @@ rpl_unlink (char const *name)
   /* Trailing NUL will overwrite the trailing slash.  */
   char *short_name = malloc (len);
   if (!short_name)
-{
-  errno = EPERM;
-  return -1;
-}
+return -1;
   memcpy (short_name, name, len);
   while (len && ISSLASH (short_name[len - 1]))
 short_name[--len] = '\0';

But while on POSIX systems, malloc() is guaranteed to set errno when it fails,
for native Windows systems we need the 'malloc-posix' module, in order to
guarantee this.


2020-03-21  Bruno Haible  

unlink: Ensure errno also on native Windows.
* modules/unlink (Depends-on): Add malloc-posix.

diff --git a/modules/unlink b/modules/unlink
index 63720aa..5fc84d9 100644
--- a/modules/unlink
+++ b/modules/unlink
@@ -9,6 +9,7 @@ Depends-on:
 unistd
 dosname [test $REPLACE_UNLINK = 1]
 lstat   [test $REPLACE_UNLINK = 1]
+malloc-posix[test $REPLACE_UNLINK = 1]
 
 configure.ac:
 gl_FUNC_UNLINK




Re: rpl_unlink sets errno to EPERM on malloc failure

2020-03-21 Thread Paul Eggert

On 3/20/20 4:54 AM, Tim Rühsen wrote:

Is this EPERM intended ?


No, it's clearly a typo. Thanks for reporting it. I installed the attached.
>From 3e89c500a2f17a8a7a278390d48419990ce24bc8 Mon Sep 17 00:00:00 2001
From: Paul Eggert 
Date: Sat, 21 Mar 2020 16:13:28 -0700
Subject: [PATCH] unlink: fix malloc errno typo
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Problem reported by Tim Rühsen in:
https://lists.gnu.org/r/bug-gnulib/2020-03/msg00044.html
* lib/unlink.c (rpl_unlink): Don’t mask malloc errno.
---
 ChangeLog| 7 +++
 lib/unlink.c | 5 +
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0019334ca..9b2a112eb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2020-03-21  Paul Eggert  
+
+	unlink: fix malloc errno typo
+	Problem reported by Tim Rühsen in:
+	https://lists.gnu.org/r/bug-gnulib/2020-03/msg00044.html
+	* lib/unlink.c (rpl_unlink): Don’t mask malloc errno.
+
 2020-03-16  Bruno Haible  
 
 	*printf-posix: Fix m4 error (regression from 2020-03-08).
diff --git a/lib/unlink.c b/lib/unlink.c
index b7daa7cd3..5e0f4e177 100644
--- a/lib/unlink.c
+++ b/lib/unlink.c
@@ -65,10 +65,7 @@ rpl_unlink (char const *name)
   /* Trailing NUL will overwrite the trailing slash.  */
   char *short_name = malloc (len);
   if (!short_name)
-{
-  errno = EPERM;
-  return -1;
-}
+return -1;
   memcpy (short_name, name, len);
   while (len && ISSLASH (short_name[len - 1]))
 short_name[--len] = '\0';
-- 
2.17.1



rpl_unlink sets errno to EPERM on malloc failure

2020-03-20 Thread Tim Rühsen
Is this EPERM intended ? If yes, there should be a comment.

lib/unlink.c (rpl_unlink):
  /* Trailing NUL will overwrite the trailing slash.  */
  char *short_name = malloc (len);
  if (!short_name)
{
  errno = EPERM;
  return -1;
}

Regards, Tim



signature.asc
Description: OpenPGP digital signature