Accepting request 676927 from Base:System

OBS-URL: https://build.opensuse.org/request/show/676927
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/tgt?expand=0&rev=35
This commit is contained in:
Yuchen Lin 2019-02-19 11:00:09 +00:00 committed by Git OBS Bridge
commit 2bbe71a4a5
12 changed files with 175 additions and 122 deletions

16
_service Normal file
View File

@ -0,0 +1,16 @@
<services>
<service name="tar_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">https://github.com/fujita/tgt.git</param>
<param name="subdir"></param>
<param name="filename">tgt</param>
<param name="versionformat">v1.0.74</param>
<param name="revision">1.0.74</param>
<param name="changesgenerate">enable</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">*tgt*.tar</param>
<param name="compression">gz</param>
</service>
<service name="set_version" mode="disabled"/>
</services>

4
_servicedata Normal file
View File

@ -0,0 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/fujita/tgt.git</param>
<param name="changesrevision">f33f6b73d3bfac8b3e44f068d02f90627b407f4e</param></service></servicedata>

View File

@ -0,0 +1,102 @@
From 2de8bebe132e3b998bf4848d0bd22b50367ad4b8 Mon Sep 17 00:00:00 2001
From: Lee Duncan <lduncan@suse.com>
Date: Sat, 16 Feb 2019 10:29:19 -0800
Subject: [PATCH] Fix gcc7 string truncation warnings.
Mostly, this is fixed by checking the legnth
of strings to be copied, making sure they will
fit where they are being copied to, and
erroring out if the copy will not fit. Then
we can just use strcpy(). We also use
scsi_sprintf() for copying to SCSI structures,
with their special requirements.
---
usr/mgmt.c | 9 +++++++--
usr/smc.c | 9 +++++++--
usr/spc.c | 9 ++++++---
usr/tgtadm.c | 6 +++++-
4 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/usr/mgmt.c b/usr/mgmt.c
index de23f1469494..00a4e08c01dc 100644
--- a/usr/mgmt.c
+++ b/usr/mgmt.c
@@ -797,11 +797,16 @@ int ipc_init(void)
goto close_lock_fd;
}
- snprintf(mgmt_path, sizeof(mgmt_path), "%s.%d", path, control_port);
+ snprintf(mgmt_path, sizeof(mgmt_path) - 1, "%s.%d", path, control_port);
+ if (strlen(mgmt_path) > (sizeof(addr.sun_path) - 1)) {
+ eprintf("managment path too long: %s\n", mgmt_path);
+ goto close_ipc_fd;
+ }
unlink(mgmt_path);
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_LOCAL;
- strncpy(addr.sun_path, mgmt_path, sizeof(addr.sun_path));
+ /* no need for strncpy because we already checked length */
+ strcpy(addr.sun_path, mgmt_path);
err = bind(fd, (struct sockaddr *) &addr, sizeof(addr));
if (err) {
diff --git a/usr/smc.c b/usr/smc.c
index b80aba272909..bbc7b7fc7b88 100644
--- a/usr/smc.c
+++ b/usr/smc.c
@@ -732,8 +732,13 @@ static tgtadm_err config_slot(struct scsi_lu *lu, struct tmp_param *tmp)
adm_err = TGTADM_SUCCESS;
break;
}
- strncpy(s->barcode, tmp->barcode, sizeof(s->barcode));
- strncpy(s->volume_tag, tmp->volume_tag, sizeof(s->volume_tag));
+ if (strlen(tmp->barcode) > sizeof(s->barcode) ||
+ strlen(tmp->volume_tag) > sizeof(s->volume_tag)) {
+ eprintf("barcode or volume tag too large?");
+ break;
+ }
+ strcpy(s->barcode, tmp->barcode);
+ strcpy(s->volume_tag, tmp->volume_tag);
set_slot_full(s, 0, NULL);
adm_err = TGTADM_SUCCESS;
break;
diff --git a/usr/spc.c b/usr/spc.c
index 82a6ec9ee863..902d5bf4a60b 100644
--- a/usr/spc.c
+++ b/usr/spc.c
@@ -289,9 +289,12 @@ int spc_inquiry(int host_no, struct scsi_cmd *cmd)
data[7] = 0x02;
memset(data + 8, 0x20, 28);
- strncpy((char *)data + 8, attrs->vendor_id, VENDOR_ID_LEN);
- strncpy((char *)data + 16, attrs->product_id, PRODUCT_ID_LEN);
- strncpy((char *)data + 32, attrs->product_rev, PRODUCT_REV_LEN);
+ scsi_sprintf((char *)data + 8, VENDOR_ID_LEN, "%-*s",
+ VENDOR_ID_LEN, attrs->vendor_id);
+ scsi_sprintf((char *)data + 16, PRODUCT_ID_LEN, "%-*s",
+ PRODUCT_ID_LEN, attrs->product_id);
+ scsi_sprintf((char *)data + 32, PRODUCT_REV_LEN, "%-*s",
+ PRODUCT_REV_LEN, attrs->product_rev);
desc = (uint16_t *)(data + 58);
for (i = 0; i < ARRAY_SIZE(attrs->version_desc); i++)
diff --git a/usr/tgtadm.c b/usr/tgtadm.c
index 5572c3888a80..cb3eb1cd126f 100644
--- a/usr/tgtadm.c
+++ b/usr/tgtadm.c
@@ -224,7 +224,11 @@ static int ipc_mgmt_connect(int *fd)
snprintf(mgmt_path, sizeof(mgmt_path), "%s.%d",
path, control_port);
- strncpy(addr.sun_path, mgmt_path, sizeof(addr.sun_path));
+ if (strlen(mgmt_path) > (sizeof(addr.sun_path) - 1)) {
+ eprintf("management path too long: %s\n", mgmt_path);
+ return EINVAL;
+ }
+ strcpy(addr.sun_path, mgmt_path);
err = connect(*fd, (struct sockaddr *) &addr, sizeof(addr));
if (err < 0)
--
2.16.4

View File

@ -1,12 +0,0 @@
diff -aurp tgt-1.0.60.orig/usr/tgtd.c tgt-1.0.60/usr/tgtd.c
--- tgt-1.0.60.orig/usr/tgtd.c 2015-07-01 17:10:39.000000000 -0700
+++ tgt-1.0.60/usr/tgtd.c 2018-08-11 18:08:50.707873331 -0700
@@ -310,7 +310,7 @@ int call_program(const char *cmd, void (
pos = arg;
str_spacecpy(&pos, cmd);
if (strchr(cmd, ' ')) {
- while (pos != '\0')
+ while (pos != NULL)
argv[i++] = strsep(&pos, " ");
} else
argv[i++] = arg;

View File

@ -16,22 +16,13 @@ diff --git a/usr/Makefile b/usr/Makefile
index e29826c..31067e8 100644 index e29826c..31067e8 100644
--- a/usr/Makefile --- a/usr/Makefile
+++ b/usr/Makefile +++ b/usr/Makefile
@@ -32,12 +32,15 @@ INCLUDES += -I. @@ -40,6 +40,9 @@ INCLUDES += -I.
CFLAGS += -D_GNU_SOURCE CFLAGS += -D_GNU_SOURCE
CFLAGS += $(INCLUDES) CFLAGS += $(INCLUDES)
+ifneq ($(OPTFLAGS),) +ifneq ($(OPTFAGS),)
+CFLAGS += $(OPTFLAGS) +CFLAGS += $(OPTFLAGS)
+endif
ifneq ($(DEBUG),) ifneq ($(DEBUG),)
CFLAGS += -g -O0 -ggdb -rdynamic CFLAGS += -g -O0 -ggdb -rdynamic
else else
CFLAGS += -g -O2 -fno-strict-aliasing
endif
CFLAGS += -Wall -Wstrict-prototypes -fPIC
+endif
CFLAGS += -DTGT_VERSION=\"$(VERSION)$(EXTRAVERSION)\"
CFLAGS += -DBSDIR=\"$(DESTDIR)$(libdir)/backing-store\"
--
1.8.1.4

View File

@ -1,55 +0,0 @@
From: Lee Duncan <lduncan@suse.com>
Date: Wed, 28 Oct 2015 14:16:13 +0900
Subject: Handle access of a target that has been removed
Git-commit: 2791ed243ab2a2fcfe48aea4a0cc23f4ad8467dc
Patch-mainline: v1.0.61
I recently got a report of a tgtd core dump from our opencloud
group. The stack trace showed that a strcmp against a NULL was causing
the failure:
----------------------------------------------------------------
Program terminated with signal 11, Segmentation fault.
(gdb) bt
name=0x6ac16f "iqn.2010-10.org.openstack:volume-e812c705-80bc-4064-a84c-5559cda8b1ca") at iscsi/target.c:216
at iscsi/iscsid.c:654
events=1, data=0x63a480 <target_list>) at iscsi/iscsi_tcp.c:158
----------------------------------------------------------------
It looks like target_find_by_name() uses tgt_targetname(), but doesn't
account for the fact that it can return a NULL when the target being
looked up does not (now) exist:
----------------------------------------------------------------
char *tgt_targetname(int tid)
{
struct target *target;
target = target_lookup(tid);
if (!target)
return NULL;
return target->name;
}
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: Lee Duncan <lduncan@suse.com>
---
usr/iscsi/target.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/usr/iscsi/target.c
+++ b/usr/iscsi/target.c
@@ -369,9 +369,11 @@ void target_list_build(struct iscsi_conn
struct iscsi_target *target_find_by_name(const char *name)
{
struct iscsi_target *target;
+ char *tname;
list_for_each_entry(target, &iscsi_targets_list, tlist) {
- if (!strcmp(tgt_targetname(target->tid), name))
+ tname = tgt_targetname(target->tid);
+ if (tname && !strcmp(tname, name))
return target;
}

View File

@ -1,9 +1,9 @@
diff -aurp tgt-1.0.60.orig/usr/bs_sg.c tgt-1.0.60/usr/bs_sg.c diff -aurp tgt-1.0.60.orig/usr/bs_sg.c tgt-1.0.60/usr/bs_sg.c
--- tgt-1.0.60.orig/usr/bs_sg.c 2015-07-01 17:10:39.000000000 -0700 --- tgt-1.0.60.orig/usr/bs_sg.c 2015-07-01 17:10:39.000000000 -0700
+++ tgt-1.0.60/usr/bs_sg.c 2018-08-11 18:03:25.489712435 -0700 +++ tgt-1.0.60/usr/bs_sg.c 2018-08-11 18:03:25.489712435 -0700
@@ -36,6 +36,7 @@ @@ -38,6 +38,7 @@
#include <sys/stat.h>
#include <sys/epoll.h> #include <sys/epoll.h>
#include <sys/sysmacros.h>
#include <scsi/sg.h> #include <scsi/sg.h>
+#include <sys/sysmacros.h> +#include <sys/sysmacros.h>

View File

@ -1,26 +0,0 @@
From: Lee Duncan <lduncan@suse.com>
Date: Mon Nov 16 08:49:57 PST 2015
Subject: backing-store modules directory not present is not an error
The backing-store modules directory, normally
/usr/lib/tgt/backing-store, is not created, needed, or used when there
are no backing store modules. So change the error message printed when
the directory is not present to a debug message.
Signed-off-by: Lee Duncan <lduncan@suse.com>
---
usr/bs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/usr/bs.c
+++ b/usr/bs.c
@@ -263,7 +263,8 @@ static int bs_init_signalfd(void)
dir = opendir(BSDIR);
if (dir == NULL) {
- eprintf("could not open backing-store module directory %s\n",
+ /* not considered an error if there are no modules */
+ dprintf("could not open backing-store module directory %s\n",
BSDIR);
} else {
struct dirent *dirent;

View File

@ -1,3 +1,39 @@
-------------------------------------------------------------------
Fri Feb 15 23:19:22 UTC 2019 - lduncan@suse.com
- Update to version v1.0.74 from version v1.0.60:
* tgt 1.0.74
* AIO backing store now reports a list of supported opcodes
* tgt 1.0.73
* Update tgt-admin
* fix build w/newer glibc
* Display nop_count and and nop_interval
* Quote $backing_store variable in system(), execute() and
backtick-calls
* Buffer size is stored in struct concat_buf.size field, so
use that instead of BUFSIZE since buffer size can be more
than BUFSIZE. Also, remove BUFSIZE since its not used anymore.
* tgt 1.0.72
* smc: fix snprintf warnings with gcc7
This removed the tarball v1.0.60.tar.gz, and replaced it
with v1.0.74.tar.gz, which can now be gotten using the new
_service file. This also updated the SPEC file with the new
version number and the different patch set. Remaining
patches were renumbered.
This following patches were UPDATED (refreshed):
* tgt-fix-build
* tgt-include-sys-macros-for-major.patch
The following patches were REMOVED (no longer needed):
* tgt-handle-access-of-a-target-that-has-been-removed
* tgt-missing-module-directory-not-an-error
* tgt-compare-pointer-to-null.patch
And the following patch was added (and submitted upstream):
* tgt-Fix-gcc7-string-truncation-warnings.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Sun Aug 12 01:11:13 UTC 2018 - lduncan@suse.com Sun Aug 12 01:11:13 UTC 2018 - lduncan@suse.com

View File

@ -1,7 +1,7 @@
# #
# spec file for package tgt # spec file for package tgt
# #
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -22,22 +22,20 @@
%endif %endif
Name: tgt Name: tgt
Version: 1.0.60 Version: 1.0.74
Release: 0 Release: 0
Summary: Generic Linux target framework (tgt) Summary: Generic Linux target framework (tgt)
License: GPL-2.0-only License: GPL-2.0-only
Group: System/Daemons Group: System/Daemons
Url: http://stgt.sourceforge.net/ Url: http://stgt.sourceforge.net/
Source: https://github.com/fujita/tgt/archive/v%{version}.tar.gz Source: https://github.com/fujita/%{name}/archive/v%{version}.tar.gz
Source1: %{name}d.service Source1: %{name}d.service
Source3: %{name}.services Source3: %{name}.services
Source4: sysconfig.%{name} Source4: sysconfig.%{name}
Patch2: %{name}-fix-build Patch1: %{name}-fix-build
Patch3: setup-tgt-conf-d.patch Patch2: setup-tgt-conf-d.patch
Patch4: %{name}-handle-access-of-a-target-that-has-been-removed Patch3: %{name}-include-sys-macros-for-major.patch
Patch5: %{name}-missing-module-directory-not-an-error Patch4: %{name}-Fix-gcc7-string-truncation-warnings.patch
Patch6: %{name}-include-sys-macros-for-major.patch
Patch7: %{name}-compare-pointer-to-null.patch
BuildRequires: docbook-xsl-stylesheets BuildRequires: docbook-xsl-stylesheets
BuildRequires: libaio-devel BuildRequires: libaio-devel
BuildRequires: libxslt BuildRequires: libxslt
@ -58,12 +56,10 @@ user-space daemon and tools (i.e. they completely runs in user space).
%prep %prep
%setup -q %setup -q
%patch1 -p1
%patch2 -p1 %patch2 -p1
%patch3 -p1 %patch3 -p1
%patch4 -p1 %patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%build %build
%ifarch ppc ppc64 ppc64le %ifarch ppc ppc64 ppc64le
@ -107,6 +103,7 @@ ln -sf service %{buildroot}/%{_sbindir}/rc%{name}d
%doc doc/README.rbd doc/tmf.txt %doc doc/README.rbd doc/tmf.txt
%doc %_defaultdocdir/%name/examples %doc %_defaultdocdir/%name/examples
%doc %_defaultdocdir/%name/html %doc %_defaultdocdir/%name/html
%{_mandir}/man5/*
%{_mandir}/man8/* %{_mandir}/man8/*
%changelog %changelog

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c126c3dc8fe51d188b979f859e6fc5bc37d76b16f7a753f2966f90382ce15641
size 295175

3
v1.0.74.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bfc202790d5326d7a18bd3928b4bb204ffb0acf443a5ec5c16a1a0fbc53be99f
size 296992