Hello community, here is the log from the commit of package libstoragemgmt for openSUSE:Factory checked in at 2018-04-17 11:08:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libstoragemgmt (Old) and /work/SRC/openSUSE:Factory/.libstoragemgmt.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libstoragemgmt" Tue Apr 17 11:08:56 2018 rev:14 rq:595903 version:1.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/libstoragemgmt/libstoragemgmt.changes 2018-01-10 23:29:21.336389556 +0100 +++ /work/SRC/openSUSE:Factory/.libstoragemgmt.new/libstoragemgmt.changes 2018-04-17 11:09:01.150315657 +0200 @@ -1,0 +2,9 @@ +Tue Mar 27 08:27:39 UTC 2018 - [email protected] + +- bsc#1084630, compat to gcc8 + Enlarge the err_msg to avoid [-Werror=format-truncation=] + '-Wno-cast-function-type' for python c building + Add automake to build requires in spec file. +- Add patch compat-gcc8.patch + +------------------------------------------------------------------- New: ---- compat-gcc8.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libstoragemgmt.spec ++++++ --- /var/tmp/diff_new_pack.J8ameV/_old 2018-04-17 11:09:01.634293093 +0200 +++ /var/tmp/diff_new_pack.J8ameV/_new 2018-04-17 11:09:01.634293093 +0200 @@ -1,7 +1,7 @@ # # spec file for package libstoragemgmt # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -34,6 +34,8 @@ Group: System/Libraries Url: https://github.com/libstorage/libstoragemgmt Source0: https://github.com/libstorage/libstoragemgmt/releases/download/%{version}/%{name}-%{version}.tar.gz +Patch0: compat-gcc8.patch +BuildRequires: automake BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: libconfig-devel @@ -260,6 +262,7 @@ %prep %setup -q +%patch0 -p1 %build %configure \ ++++++ compat-gcc8.patch ++++++ commit edbd5fed3cb5f4f48dcc7ee97f601d2ea3537911 Author: Gris Ge <[email protected]> Date: Fri Mar 23 20:38:55 2018 +0800 Fix GCC 8 compile warnings. * Fix '-Werror=format-truncation' warning by increase the buffer size. * Fix '-Werror=cast-function-type' warning by disable it for Python c extension, reason: https://stackoverflow.com/questions/10264080/python-c-extension-why-are-methods-that-use-keyword-arguments-cast-to-pycfunct diff --git a/c_binding/libsg.c b/c_binding/libsg.c index 75ee39d..4689369 100644 --- a/c_binding/libsg.c +++ b/c_binding/libsg.c @@ -367,8 +367,9 @@ static int _sg_io_open(char *err_msg, const char *disk_path, int *fd, * The 'sense_key' is the output pointer. * Return 0 if sense_key is _T10_SPC_SENSE_KEY_NO_SENSE or * _T10_SPC_SENSE_KEY_RECOVERED_ERROR, return -1 otherwise. + * sense_err_msg should be char[_LSM_ERR_MSG_LEN / 2] */ -static int _check_sense_data(char *err_msg, uint8_t *sense_data, +static int _check_sense_data(char *sense_err_msg, uint8_t *sense_data, uint8_t *sense_key); static int _extract_ata_sense_data(char *err_msg, uint8_t *sense_data, @@ -485,14 +486,14 @@ int _sg_io_vpd(char *err_msg, int fd, uint8_t page_code, uint8_t *data) int rc_vpd_00 = 0; char strerr_buff[_LSM_ERR_MSG_LEN]; uint8_t sense_key = _T10_SPC_SENSE_KEY_NO_SENSE; - char sense_err_msg[_LSM_ERR_MSG_LEN]; + char sense_err_msg[_LSM_ERR_MSG_LEN / 2]; ssize_t data_len = 0; assert(err_msg != NULL); assert(fd >= 0); assert(data != NULL); - memset(sense_err_msg, 0, _LSM_ERR_MSG_LEN); + memset(sense_err_msg, 0, sizeof(sense_err_msg)); switch(page_code) { case _SG_T10_SPC_VPD_ATA_INFO: @@ -812,7 +813,7 @@ static int _sg_io_open(char *err_msg, const char *disk_path, int *fd, int oflag) return rc; } -static int _check_sense_data(char *err_msg, uint8_t *sense_data, +static int _check_sense_data(char *sense_err_msg, uint8_t *sense_data, uint8_t *sense_key) { int rc = -1; @@ -856,8 +857,9 @@ static int _check_sense_data(char *err_msg, uint8_t *sense_data, rc = 0; goto out; default: - _lsm_err_msg_set(err_msg, "Got unknown sense data response code %02x", - sense_hdr->response_code); + snprintf(sense_err_msg, _LSM_ERR_MSG_LEN / 2, + "Got unknown sense data response code %02x", + sense_hdr->response_code); goto out; } /* TODO(Gris Ge): Handle ADDITIONAL SENSE CODE field and ADDITIONAL SENSE @@ -879,11 +881,12 @@ static int _check_sense_data(char *err_msg, uint8_t *sense_data, /* As sense_key is 4 bytes and we covered all 16 values in * _T10_SPC_SENSE_KEY_STR, there will be no out of index error. */ - _lsm_err_msg_set(err_msg, "Got SCSI sense data, key %s(0x%02x), " - "ADDITIONAL SENSE CODE 0x%02x, ADDITIONAL SENSE CODE " - "QUALIFIER 0x%02x, all sense data in hex: %s", - _T10_SPC_SENSE_KEY_STR[*sense_key], *sense_key, - asc, ascq, sense_data_str); + snprintf(sense_err_msg, _LSM_ERR_MSG_LEN / 2 , + "Got SCSI sense data, key %s(0x%02x), " + "ADDITIONAL SENSE CODE 0x%02x, ADDITIONAL SENSE CODE " + "QUALIFIER 0x%02x, all sense data in hex: %s", + _T10_SPC_SENSE_KEY_STR[*sense_key], *sense_key, + asc, ascq, sense_data_str); } out: @@ -921,13 +924,13 @@ int _sg_io_recv_diag(char *err_msg, int fd, uint8_t page_code, uint8_t *data) char strerr_buff[_LSM_ERR_MSG_LEN]; uint8_t sense_data[_T10_SPC_SENSE_DATA_MAX_LENGTH]; uint8_t sense_key = _T10_SPC_SENSE_KEY_NO_SENSE; - char sense_err_msg[_LSM_ERR_MSG_LEN]; + char sense_err_msg[_LSM_ERR_MSG_LEN / 2]; assert(err_msg != NULL); assert(fd >= 0); assert(data != NULL); - memset(sense_err_msg, 0, _LSM_ERR_MSG_LEN); + memset(sense_err_msg, 0, sizeof(sense_err_msg)); /* SPC-5 rev 07, Table 219 - RECEIVE DIAGNOSTIC RESULTS command */ cdb[0] = RECEIVE_DIAGNOSTIC; /* OPERATION CODE */ @@ -975,14 +978,14 @@ int _sg_io_send_diag(char *err_msg, int fd, uint8_t *data, uint16_t data_len) char strerr_buff[_LSM_ERR_MSG_LEN]; uint8_t sense_data[_T10_SPC_SENSE_DATA_MAX_LENGTH]; uint8_t sense_key = _T10_SPC_SENSE_KEY_NO_SENSE; - char sense_err_msg[_LSM_ERR_MSG_LEN]; + char sense_err_msg[_LSM_ERR_MSG_LEN / 2]; assert(err_msg != NULL); assert(fd >= 0); assert(data != NULL); assert(data_len > 0); - memset(sense_err_msg, 0, _LSM_ERR_MSG_LEN); + memset(sense_err_msg, 0, sizeof(sense_err_msg)); /* SPC-5 rev 07, Table 219 - RECEIVE DIAGNOSTIC RESULTS command */ cdb[0] = SEND_DIAGNOSTIC; /* OPERATION CODE */ @@ -1078,7 +1081,7 @@ int _sg_io_mode_sense(char *err_msg, int fd, uint8_t page_code, int ioctl_errno = 0; char strerr_buff[_LSM_ERR_MSG_LEN]; uint8_t sense_key = _T10_SPC_SENSE_KEY_NO_SENSE; - char sense_err_msg[_LSM_ERR_MSG_LEN]; + char sense_err_msg[_LSM_ERR_MSG_LEN / 2]; struct _sg_t10_mode_para_hdr *mode_hdr = NULL; uint16_t block_dp_len = 0; uint16_t mode_data_len = 0; @@ -1087,7 +1090,7 @@ int _sg_io_mode_sense(char *err_msg, int fd, uint8_t page_code, assert(fd >= 0); assert(data != NULL); - memset(sense_err_msg, 0, _LSM_ERR_MSG_LEN); + memset(sense_err_msg, 0, sizeof(sense_err_msg)); memset(data, 0, _SG_T10_SPC_MODE_SENSE_MAX_LEN); /* SPC-5 Table 171 - MODE SENSE(10) command */ @@ -1257,7 +1260,7 @@ static int _sg_log_sense(char *err_msg, int fd, uint8_t page_code, int ioctl_errno = 0; char strerr_buff[_LSM_ERR_MSG_LEN]; uint8_t sense_key = _T10_SPC_SENSE_KEY_NO_SENSE; - char sense_err_msg[_LSM_ERR_MSG_LEN]; + char sense_err_msg[_LSM_ERR_MSG_LEN / 2]; struct _sg_t10_log_para_hdr *log_hdr = NULL; uint16_t log_data_len = 0; @@ -1265,7 +1268,7 @@ static int _sg_log_sense(char *err_msg, int fd, uint8_t page_code, assert(fd >= 0); assert(data != NULL); - memset(sense_err_msg, 0, _LSM_ERR_MSG_LEN); + memset(sense_err_msg, 0, sizeof(sense_err_msg)); memset(cdb, 0, _T10_SPC_LOG_SENSE_CMD_LEN); cdb[0] = LOG_SENSE; @@ -1320,14 +1323,14 @@ int _sg_request_sense(char *err_msg, int fd, uint8_t *returned_sense_data) uint8_t sense_data[_T10_SPC_SENSE_DATA_MAX_LENGTH]; int ioctl_errno = 0; uint8_t sense_key = _T10_SPC_SENSE_KEY_NO_SENSE; - char sense_err_msg[_LSM_ERR_MSG_LEN]; + char sense_err_msg[_LSM_ERR_MSG_LEN / 2]; char strerr_buff[_LSM_ERR_MSG_LEN]; assert(err_msg != NULL); assert(fd >= 0); assert(returned_sense_data != NULL); - memset(sense_err_msg, 0, _LSM_ERR_MSG_LEN); + memset(sense_err_msg, 0, sizeof(sense_err_msg)); memset(cdb, 0, _T10_SPC_REQUEST_SENSE_CMD_LEN); cdb[0] = REQUEST_SENSE; diff --git a/c_binding/utils.h b/c_binding/utils.h index 15d0c97..f63b6e3 100644 --- a/c_binding/utils.h +++ b/c_binding/utils.h @@ -23,7 +23,7 @@ #include <stdio.h> #include <stdbool.h> -#define _LSM_ERR_MSG_LEN 1024 +#define _LSM_ERR_MSG_LEN 4096 #define _good(rc, rc_val, out) \ do { \ diff --git a/plugin/simc/db.c b/plugin/simc/db.c index 7b3613e..aad9f30 100644 --- a/plugin/simc/db.c +++ b/plugin/simc/db.c @@ -768,7 +768,7 @@ void _db_sql_trans_rollback(sqlite3 *db) int _db_data_add(char *err_msg, sqlite3 *db, const char *table_name, ...) { int rc = LSM_ERR_OK; - char sql_cmd[_BUFF_SIZE]; + char sql_cmd[_BUFF_SIZE * 4]; char keys_str[_BUFF_SIZE]; char values_str[_BUFF_SIZE]; const char *key_str = NULL; diff --git a/plugin/simc/nfs_ops.c b/plugin/simc/nfs_ops.c index 4d7235d..b8bcde5 100644 --- a/plugin/simc/nfs_ops.c +++ b/plugin/simc/nfs_ops.c @@ -159,7 +159,7 @@ int nfs_export_fs(lsm_plugin_ptr c, const char *fs_id, const char *export_path, uint64_t sim_fs_id = 0; uint64_t sim_exp_id = 0; char tmp_export_path[_BUFF_SIZE]; - char vpd83[_BUFF_SIZE]; + char vpd83[_VPD_83_LEN]; _UNUSED(flags); _lsm_err_msg_clear(err_msg); diff --git a/plugin/simc/san_ops.c b/plugin/simc/san_ops.c index 57161ad..2c9fbde 100644 --- a/plugin/simc/san_ops.c +++ b/plugin/simc/san_ops.c @@ -1111,7 +1111,7 @@ int volume_unmask(lsm_plugin_ptr c, lsm_access_group *group, lsm_volume *volume, char err_msg[_LSM_ERR_MSG_LEN]; char condition[_BUFF_SIZE]; struct _vector *vec = NULL; - char sql_cmd_check_mask[_BUFF_SIZE]; + char sql_cmd_check_mask[_BUFF_SIZE * 4]; _UNUSED(flags); _lsm_err_msg_clear(err_msg); diff --git a/plugin/simc/utils.h b/plugin/simc/utils.h index 6914e59..90bb54a 100644 --- a/plugin/simc/utils.h +++ b/plugin/simc/utils.h @@ -36,7 +36,7 @@ struct _simc_private_data { #define _UNUSED(x) (void)(x) #define _MD5_HASH_STR_LEN MD5_DIGEST_LENGTH * 2 + 1 -#define _LSM_ERR_MSG_LEN 1024 +#define _LSM_ERR_MSG_LEN 4096 #define _VPD_83_LEN 17 /* ^ 6h IEEE Registered ID which it 16 bits hex string. */ @@ -63,8 +63,8 @@ struct _simc_private_data { #define _snprintf_buff(err_msg, rc, out, buff, format, ...) \ do { \ if (buff != NULL) \ - snprintf(buff, _BUFF_SIZE, format, ##__VA_ARGS__); \ - if (strlen(buff) == _BUFF_SIZE - 1 ) { \ + snprintf(buff, sizeof(buff)/sizeof(char), format, ##__VA_ARGS__); \ + if (strlen(buff) == sizeof(buff)/sizeof(char) - 1 ) { \ rc = LSM_ERR_PLUGIN_BUG; \ _lsm_err_msg_set(err_msg, "Buff too small"); \ goto out; \ diff --git a/python_binding/Makefile.am b/python_binding/Makefile.am index 56a4710..cacb6a0 100644 --- a/python_binding/Makefile.am +++ b/python_binding/Makefile.am @@ -21,7 +21,8 @@ endif pyexec_LTLIBRARIES = lsm/_clib.la pyexecdir = $(pythondir)/lsm -lsm__clib_la_CFLAGS = $(PYTHON_CFLAGS) -I$(top_srcdir)/c_binding/include +lsm__clib_la_CFLAGS = $(PYTHON_CFLAGS) -I$(top_srcdir)/c_binding/include \ + -Wno-cast-function-type lsm__clib_la_SOURCES = lsm/_clib.c lsm__clib_la_LDFLAGS = $(PYTHON_LIBS) \ -module -avoid-version -export-symbols-regex \
