[uclibc-ng-devel,31/32] Fix shm_open posix compliance error code

Message ID 20180704160941.3261-2-christophe.lyon@st.com
State New
Headers show
Series
  • Untitled series #53742
Related show

Commit Message

Christophe Lyon July 4, 2018, 4:09 p.m.
Handle EISDIR in shm_open like glibc does, and set EINVAL.

	* librt/shm.c (shm_open): Handle EISDIR error.

Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>

Patch

diff --git a/librt/shm.c b/librt/shm.c
index 40e69fa..79c98a3 100644
--- a/librt/shm.c
+++ b/librt/shm.c
@@ -84,6 +84,9 @@  int shm_open(const char *name, int oflag, mode_t mode)
 		 */
 	}
 #endif
+    if (fd < 0 && errno == EISDIR)
+        /* EISDIR is not valid for shm_open, replace it with EINVAL as glibc.  */
+        __set_errno (EINVAL);
 	free(shm_name); /* doesn't affect errno */
 	return fd;
 }