summaryrefslogtreecommitdiff
path: root/net/netatalk3/files/patch-libatalk_vfs_extattr.c
blob: 70e25e64aa456a1eb490d03e7275e23d53e15675 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--- libatalk/vfs/extattr.c.orig	2013-10-18 07:57:33.000000000 -0400
+++ libatalk/vfs/extattr.c	2014-05-27 12:31:57.000000000 -0400
@@ -193,6 +193,8 @@ ssize_t sys_fgetxattr (int filedes, cons
     const char *attrname = ((s=strchr(name, '.')) == NULL) ? name : s + 1;
 
     if((retval=extattr_get_fd(filedes, attrnamespace, attrname, NULL, 0)) >= 0) {
+	if (size == 0)
+	    return retval;
         if(retval > size) {
             errno = ERANGE;
             return -1;
@@ -241,6 +243,10 @@ ssize_t sys_lgetxattr (const char *path,
 #elif defined(HAVE_EXTATTR_GET_LINK)
 	ssize_t retval;
 	if((retval=extattr_get_link(path, EXTATTR_NAMESPACE_USER, uname, NULL, 0)) >= 0) {
+		if (size == 0) {
+			/* size == 0 means only return size */
+			return retval;
+		}
 		if(retval > size) {
 			errno = ERANGE;
 			return -1;