From: Jarkko Sakkinen Date: Wed, 18 Dec 2013 20:02:06 +0000 (+0200) Subject: libsmack: fix label validation in smack_new_label_from_path X-Git-Tag: v1.0.4~31 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e68907525666ce95a66976df89ebf0ee2a3d22b8;p=platform%2Fupstream%2Fsmack.git libsmack: fix label validation in smack_new_label_from_path Off-by-one length was returned from the function. This patch fixes the regression by doing full validation for the SMACK label. Signed-off-by: Jarkko Sakkinen --- diff --git a/libsmack/libsmack.c b/libsmack/libsmack.c index d5ba7dd..0052c1d 100644 --- a/libsmack/libsmack.c +++ b/libsmack/libsmack.c @@ -581,22 +581,21 @@ ssize_t smack_new_label_from_socket(int fd, char **label) ssize_t smack_new_label_from_path(const char *path, const char *xattr, int follow, char **label) { + char buf[SMACK_LABEL_LEN + 1]; char *result; ssize_t ret = 0; ret = follow ? - getxattr(path, xattr, NULL, 0) : - lgetxattr(path, xattr, NULL, 0); - if (ret < 0 && errno != ERANGE) + getxattr(path, xattr, buf, SMACK_LABEL_LEN + 1) : + lgetxattr(path, xattr, buf, SMACK_LABEL_LEN + 1); + if (ret < 0) return -1; result = calloc(ret + 1, 1); if (result == NULL) return -1; - ret = follow ? - getxattr(path, xattr, result, ret) : - lgetxattr(path, xattr, result, ret); + ret = get_label(result, buf); if (ret < 0) { free(result); return -1;