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:
Yousong Zhou 2017-11-09 17:29:56 +08:00
parent a6e9d146f2
commit b2aa820b48
2 changed files with 7 additions and 8 deletions

View file

@ -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/

View file

@ -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() {