Commit 3d5e7f06 authored by Jann - Ove Risvik's avatar Jann - Ove Risvik Committed by Natanael Copa
Browse files

main/open-iscsi: musl fix for error handling. (bug #4802)

fixes #4802

Seems like iscsiadm relies on checking optopt for checking if there's an
error, instead of checking whether opterr is set or if getopt returns
'?' and then using optopt to retrieve the option that it didn't
recognize.

For some reason musl sets optopt to the last option parsed even if it
was valid. Is musl supposed to do that? glibc doesn't behave this way.
The posix standard for getopt also reads like optopt is only supposed to
be set when there's an error.
parent d0a7fcca
......@@ -2,7 +2,7 @@
pkgname=open-iscsi
pkgver=2.0.873
_realver=${pkgver%.*}-${pkgver##*.}
pkgrel=3
pkgrel=4
pkgdesc="High performance, transport independent, multi-platform iSCSI initiator"
url="http://www.open-iscsi.org"
arch="all"
......@@ -48,14 +48,14 @@ package() {
}
md5sums="8b8316d7c9469149a6cc6234478347f7 open-iscsi-2.0-873.tar.gz
080961aef6eb9d0e8e5f65cf95411225 musl-fixes.patch
172401baaafd88db861c691f46fdb642 musl-fixes.patch
c6a0c15c0c21b13915179fb7e0cf0003 iscsid.initd
b762b687d4628791b4362df22cf22d34 iscsid.confd"
sha256sums="7dd9f2f97da417560349a8da44ea4fcfe98bfd5ef284240a2cc4ff8e88ac7cd9 open-iscsi-2.0-873.tar.gz
44acaab8123abb8a205732baba11e1c70bcf828dfd3ac5c42c475ee85b433507 musl-fixes.patch
5609394d51ba1ea1fc9ad8f91f2162734c5ee8867fe0ffe944823fb1924acaa6 musl-fixes.patch
38edede472f478ce01f40e3557c315de3f3ecf1d0c0dbab2883517840a7186b5 iscsid.initd
673bf4744efc3276d372587c996270821d39dcdc0bf27a13691ea6b0e814b6d0 iscsid.confd"
sha512sums="4e67116cb7dd49381c9279645e5a661f05596ae6be3b832772089828b3764ca2d04b5dea1bcc337071efb52c3c75a6fb943136c659ee59500f3a198ed0dcea6b open-iscsi-2.0-873.tar.gz
d40f6f14d848f2d8a2fdb11672be9b9147b71a72ac06b33f771bbe80e5fa4b5d92405df7f8978e8cd1779820e9797473bd55fc07b4f49d32c5279ac0fb39c93f musl-fixes.patch
64a29480ade09440cedb99d0d36ad0984978c6e8d7dcd29c843b46e42ca651b5631d7212127c6db8cae04b352c04c79c7128b9d99a5b5e333620d8421a1f31fc musl-fixes.patch
e16d0abf117c0c282e98abb14893923609dc6078f770facd0578ad72ce6e3fc7b9c84a39628c1246d955ba6bb204fb902bcba6d5959ac755fee7e2a85da181df iscsid.initd
075bb9cb783be7ccbc799947e0e042b85310d40b3045141dc1be40ca84ed1cc0e1e54559df501c512c179e28375314b27a03c15d9a6d4b1cabd428b2279985d3 iscsid.confd"
......@@ -29,3 +29,36 @@
#include <dirent.h>
#include <limits.h>
#include <sys/stat.h>
--- ./usr/iscsiadm.c.orig 2012-05-21 02:59:24.000000000 +0200
+++ ./usr/iscsiadm.c 2016-07-20 22:00:54.430451701 +0200
@@ -2403,6 +2403,7 @@ main(int argc, char **argv)
int tpgt = PORTAL_GROUP_TAG_UNKNOWN, killiscsid=-1, do_show=0;
int packet_size=32, ping_count=1, ping_interval=0;
int do_discover = 0, sub_mode = -1;
+ int argerror = 0;
struct sigaction sa_old;
struct sigaction sa_new;
struct list_head ifaces;
@@ -2553,7 +2554,11 @@ main(int argc, char **argv)
return 0;
case 'h':
usage(0);
- }
+
+ case '?':
+ log_error("unrecognized character '%c'", optopt);
+ argerror = 1;
+ }
if (name && value) {
param = idbm_alloc_user_param(name, value);
@@ -2568,8 +2573,7 @@ main(int argc, char **argv)
}
}
- if (optopt) {
- log_error("unrecognized character '%c'", optopt);
+ if (argerror) {
rc = ISCSI_ERR_INVAL;
goto free_ifaces;
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment