base-files: fix getting gid from group_add_next
Shell function return code only has range [0, 255]. Other values will be truncated, e.g. return 65536 will have the same effect as return 0 While at it, drop other "return $rc" where rc will almost always take value 0 and whose value current callers actually do not check Fixes FS#988 Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
		| @@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk | |||||||
| include $(INCLUDE_DIR)/version.mk | include $(INCLUDE_DIR)/version.mk | ||||||
|  |  | ||||||
| PKG_NAME:=base-files | PKG_NAME:=base-files | ||||||
| PKG_RELEASE:=177 | PKG_RELEASE:=178 | ||||||
| PKG_FLAGS:=nonshared | PKG_FLAGS:=nonshared | ||||||
|  |  | ||||||
| PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ | PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ | ||||||
|   | |||||||
| @@ -202,7 +202,7 @@ add_group_and_user() { | |||||||
| 			if [ -n "$gname" ] && [ -n "$gid" ]; then | 			if [ -n "$gname" ] && [ -n "$gid" ]; then | ||||||
| 				group_exists "$gname" || group_add "$gname" "$gid" | 				group_exists "$gname" || group_add "$gname" "$gid" | ||||||
| 			elif [ -n "$gname" ]; then | 			elif [ -n "$gname" ]; then | ||||||
| 				group_add_next "$gname"; gid=$? | 				gid="$(group_add_next "$gname")" | ||||||
| 			fi | 			fi | ||||||
|  |  | ||||||
| 			if [ -n "$uname" ]; then | 			if [ -n "$uname" ]; then | ||||||
| @@ -296,9 +296,7 @@ group_add() { | |||||||
| 	[ -f "${IPKG_INSTROOT}/etc/group" ] || return 1 | 	[ -f "${IPKG_INSTROOT}/etc/group" ] || return 1 | ||||||
| 	[ -n "$IPKG_INSTROOT" ] || lock /var/lock/group | 	[ -n "$IPKG_INSTROOT" ] || lock /var/lock/group | ||||||
| 	echo "${name}:x:${gid}:" >> ${IPKG_INSTROOT}/etc/group | 	echo "${name}:x:${gid}:" >> ${IPKG_INSTROOT}/etc/group | ||||||
| 	rc=$? |  | ||||||
| 	[ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/group | 	[ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/group | ||||||
| 	return $rc |  | ||||||
| } | } | ||||||
|  |  | ||||||
| group_exists() { | group_exists() { | ||||||
| @@ -308,14 +306,17 @@ group_exists() { | |||||||
| group_add_next() { | group_add_next() { | ||||||
| 	local gid gids | 	local gid gids | ||||||
| 	gid=$(grep -s "^${1}:" ${IPKG_INSTROOT}/etc/group | cut -d: -f3) | 	gid=$(grep -s "^${1}:" ${IPKG_INSTROOT}/etc/group | cut -d: -f3) | ||||||
| 	[ -n "$gid" ] && return $gid | 	if [ -n "$gid" ]; then | ||||||
|  | 		echo $gid | ||||||
|  | 		return | ||||||
|  | 	fi | ||||||
| 	gids=$(cat ${IPKG_INSTROOT}/etc/group | cut -d: -f3) | 	gids=$(cat ${IPKG_INSTROOT}/etc/group | cut -d: -f3) | ||||||
| 	gid=65536 | 	gid=65536 | ||||||
| 	while [ -n "$(echo "$gids" | grep "^$gid$")" ] ; do | 	while [ -n "$(echo "$gids" | grep "^$gid$")" ] ; do | ||||||
| 	        gid=$((gid + 1)) | 	        gid=$((gid + 1)) | ||||||
| 	done | 	done | ||||||
| 	group_add $1 $gid | 	group_add $1 $gid | ||||||
| 	return $gid | 	echo $gid | ||||||
| } | } | ||||||
|  |  | ||||||
| group_add_user() { | group_add_user() { | ||||||
| @@ -348,9 +349,7 @@ user_add() { | |||||||
| 	[ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd | 	[ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd | ||||||
| 	echo "${name}:x:${uid}:${gid}:${desc}:${home}:${shell}" >> ${IPKG_INSTROOT}/etc/passwd | 	echo "${name}:x:${uid}:${gid}:${desc}:${home}:${shell}" >> ${IPKG_INSTROOT}/etc/passwd | ||||||
| 	echo "${name}:x:0:0:99999:7:::" >> ${IPKG_INSTROOT}/etc/shadow | 	echo "${name}:x:0:0:99999:7:::" >> ${IPKG_INSTROOT}/etc/shadow | ||||||
| 	rc=$? |  | ||||||
| 	[ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd | 	[ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd | ||||||
| 	return $rc |  | ||||||
| } | } | ||||||
|  |  | ||||||
| user_exists() { | user_exists() { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Yousong Zhou
					Yousong Zhou