From 9033d4b6b9b85ab3e502b376daf66ae566c026b6 Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Wed, 13 Mar 2019 02:51:56 -0400 Subject: libopkbuild: Abort on invalid function arguments Shift arguments and abort instead of returning 125. Incorrect numbers of function arguments suggest application/library incompatibilities or serious errors by the application developer. Either way, the application developer should be made immediately aware of this (and not allowed to simply not check return values), and continuing to run and handle any further API calls may be unsafe. --- (limited to 'lib/package.sh') diff --git a/lib/package.sh b/lib/package.sh index 8664c99..1a07019 100644 --- a/lib/package.sh +++ b/lib/package.sh @@ -25,13 +25,8 @@ _OB_BINARY_PARAMETERS= ob_init_package() { - local dir= - - if [ ${#} -eq 1 ]; then - dir="${1}" - else - return 125 - fi + local dir="${1}" + shift 1 || _ob_abort _OB_PACKAGE_DIR="$(cd "${dir}" && pwd)" @@ -55,10 +50,8 @@ ob_init_package() _ob_package_do() { - local func= - - func="${1}" - shift 1 + local func="${1}" + shift 1 || _ob_abort "_ob_${func}_${_OB_PACKAGE_FORMAT}" "${@}" @@ -81,16 +74,12 @@ ob_parse_package_metadata() cache_file="${OPTARG}" ;; ?) - return 125 + _ob_abort ;; esac done shift $(($OPTIND - 1)) - if [ ${#} -gt 0 ]; then - return 125 - fi - # Load a previously saved cache file, if any. if [ -n "${cache_file}" -a -r "${cache_file}" ]; then if [ "${cache_file#*/}" != "${cache_file}" ]; then @@ -151,16 +140,12 @@ ob_get_binary_packages() host_plat="${OPTARG}" ;; ?) - return 125 + _ob_abort ;; esac done shift $(($OPTIND - 1)) - if [ ${#} -gt 0 ]; then - return 125 - fi - # NB: If a source package lists no binary packages, this will be true each # call. if [ -z "${_OB_BINARY_PACKAGES}" ]; then @@ -218,17 +203,12 @@ ob_get_binary_packages() ob_get_source_parameter() { - local name= - - if [ ${#} -eq 1 ]; then - name="${1}" - else - return 125 - fi + local name="${1}" + shift 1 || _ob_abort # Convert field name to uppercase and validate. case "${name}" in *[!A-Za-z0-9-]* | '') - return 125 + return 1 esac name="$(tr 'a-z-' 'A-Z_' <<-EOF ${name} @@ -242,18 +222,12 @@ ob_get_source_parameter() ob_get_binary_parameter() { - local package= - local name= - - if [ ${#} -eq 2 ]; then - package="${1}" - name="${2}" - else - return 125 - fi + local package="${1}" + local name="${2}" + shift 2 || _ob_abort if ! ob_validate_binary_name "${package}"; then - return 125 + return 1 fi # Convert package name to its uppercase "clean" form. @@ -264,7 +238,7 @@ ob_get_binary_parameter() # Convert field name to uppercase and validate. case "${name}" in *[!A-Za-z0-9-]* | '') - return 125 + return 1 esac name="$(tr 'a-z-' 'A-Z_' <<-EOF ${name} @@ -278,10 +252,6 @@ ob_get_binary_parameter() ob_get_doc_package() { - if [ ${#} -gt 0 ]; then - return 125 - fi - _ob_package_do 'get_doc_package' return ${?} @@ -289,15 +259,9 @@ ob_get_doc_package() ob_get_doc_files() { - local arch= - local plat= - - if [ ${#} -eq 2 ]; then - arch="${1}" - plat="${2}" - else - return 125 - fi + local arch="${1}" + local plat="${2}" + shift 2 || _ob_abort _ob_package_do 'get_doc_files' "${arch}" "${plat}" @@ -306,10 +270,6 @@ ob_get_doc_files() ob_summarize_package_arch() { - if [ ${#} -gt 0 ]; then - return 125 - fi - # XXX: Stub. return 0 @@ -317,10 +277,6 @@ ob_summarize_package_arch() ob_summarize_package_plat() { - if [ ${#} -gt 0 ]; then - return 125 - fi - # XXX: Stub. return 0 @@ -328,13 +284,8 @@ ob_summarize_package_plat() ob_set_package_substvars() { - local pkg= - - if [ ${#} -eq 1 ]; then - pkg="${1}" - else - return 125 - fi + local pkg="${1}" + shift 1 || _ob_abort _ob_package_do 'set_package_substvars' "${pkg}" @@ -343,9 +294,8 @@ ob_set_package_substvars() _ob_set_binary_packages() { - local packages= - - packages="${1}" + local packages="${1}" + shift 1 || _ob_abort _OB_BINARY_PACKAGES="${packages}" @@ -354,15 +304,13 @@ _ob_set_binary_packages() _ob_set_source_parameter() { - local name= - local value= - - name="${1}" - value="${2}" + local name="${1}" + local value="${2}" + shift 2 || _ob_abort # Convert field name to uppercase and validate. case "${name}" in *[!A-Za-z0-9-]* | '') - return 125 + return 1 esac name="$(tr 'a-z-' 'A-Z_' <<-EOF ${name} @@ -378,16 +326,13 @@ _ob_set_source_parameter() _ob_set_binary_parameter() { - local package= - local name= - local value= - - package="${1}" - name="${2}" - value="${3}" + local package="${1}" + local name="${2}" + local value="${3}" + shift 3 || _ob_abort if ! ob_validate_binary_name "${package}"; then - return 125 + return 1 fi # Convert package name to its uppercase "clean" form. @@ -398,7 +343,7 @@ _ob_set_binary_parameter() # Convert field name to uppercase and validate. case "${name}" in *[!A-Za-z0-9-]* | '') - return 125 + return 1 esac name="$(tr 'a-z-' 'A-Z_' <<-EOF ${name} -- cgit v0.9.1