Compare commits

..

No commits in common. "f3e93578a11d6c939ed1202d781d0f37a997c813" and "075ca45bd873af9ace49b53b85f298b75e9a3151" have entirely different histories.

8 changed files with 309 additions and 22 deletions

View File

@ -0,0 +1,66 @@
From def2845efacab3a3973fb0218ac5077a162f8f1e Mon Sep 17 00:00:00 2001
From: Jean Delvare <jdelvare@suse.de>
Date: Thu, 2 Nov 2017 16:17:50 +0100
Subject: [PATCH 1/3] i2c-tools: i2cbusses: Avoid buffer overflows in sysfs
paths
sprintf isn't safe, use snprintf instead.
---
CHANGES | 3 +++
tools/i2cbusses.c | 10 +++++-----
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/CHANGES b/CHANGES
index 15ff761..539adb0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
i2c-tools CHANGES
-----------------
+master
+ tools: Fix potential buffer overflows in i2cbusses
+
4.0 (2017-10-30)
tools: Fix build with recent compilers (gcc 4.6+)
Add examples to the manual pages
diff --git a/tools/i2cbusses.c b/tools/i2cbusses.c
index dad22ea..cb78cc7 100644
--- a/tools/i2cbusses.c
+++ b/tools/i2cbusses.c
@@ -220,18 +220,18 @@ struct i2c_adap *gather_i2c_busses(void)
/* this should work for kernels 2.6.5 or higher and */
/* is preferred because is unambiguous */
- sprintf(n, "%s/%s/name", sysfs, de->d_name);
+ snprintf(n, NAME_MAX, "%s/%s/name", sysfs, de->d_name);
f = fopen(n, "r");
/* this seems to work for ISA */
if(f == NULL) {
- sprintf(n, "%s/%s/device/name", sysfs, de->d_name);
+ snprintf(n, NAME_MAX, "%s/%s/device/name", sysfs, de->d_name);
f = fopen(n, "r");
}
/* non-ISA is much harder */
/* and this won't find the correct bus name if a driver
has more than one bus */
if(f == NULL) {
- sprintf(n, "%s/%s/device", sysfs, de->d_name);
+ snprintf(n, NAME_MAX, "%s/%s/device", sysfs, de->d_name);
if(!(ddir = opendir(n)))
continue;
while ((dde = readdir(ddir)) != NULL) {
@@ -240,8 +240,8 @@ struct i2c_adap *gather_i2c_busses(void)
if (!strcmp(dde->d_name, ".."))
continue;
if ((!strncmp(dde->d_name, "i2c-", 4))) {
- sprintf(n, "%s/%s/device/%s/name",
- sysfs, de->d_name, dde->d_name);
+ snprintf(n, NAME_MAX, "%s/%s/device/%s/name",
+ sysfs, de->d_name, dde->d_name);
if((f = fopen(n, "r")))
goto found;
}
--
2.14.3

View File

@ -0,0 +1,104 @@
From fbd988b4fa3d008c5fd210a66834d1305de41f6c Mon Sep 17 00:00:00 2001
From: Jean Delvare <jdelvare@suse.de>
Date: Fri, 3 Aug 2018 13:54:26 +0200
Subject: [PATCH] libi2c: Mention the correct license in source files
The libi2c library is released under the LGPL, not GPL, as explained
in the README file and documented in lib/Module.mk. Thanks to
Aurelien Jarno for pointing out the inconsistency.
A little bit of history:
The code started its life two decades ago as part of the lm-sensors
project, which was released as a whole under the GPL originally,
including the library part (libsensors).
In 2007, I decided to split the i2c tools, which are not specific
to sensor devices, to a separate package.
In 2009, as I was working on lm-sensors v3, I contacted all the
original authors to get their approval to release the upcoming and all
future versions of libsensors as LGPL instead, to allow wider
adoption. The proposal was accepted by all original authors.
In 2012, I decided to turn the inlined i2c_smbus_* helper functions
into a proper library, with the intent to release it under the LGPL,
as is the common practice for libraries. As the authors of this code
is a subset of the authors of libsensors, I assumed their agreement
for libsensors could be extended to libi2c as well. This is the
reason why LGPL is mentioned in README and lib/Module.mk.
Unfortunately, when working on the library code itself, I forgot to
update the comments in the source files. Let's fix them now.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
---
include/i2c/smbus.h | 21 ++++++---------------
lib/smbus.c | 16 +++-------------
2 files changed, 9 insertions(+), 28 deletions(-)
diff --git a/include/i2c/smbus.h b/include/i2c/smbus.h
index 18a5305..3003ed7 100644
--- a/include/i2c/smbus.h
+++ b/include/i2c/smbus.h
@@ -1,23 +1,14 @@
/*
smbus.h - SMBus level access helper functions
- Copyright (C) 1995-97 Simon G. Vogl
- Copyright (C) 1998-99 Frodo Looijaard <frodol@dds.nl>
+ Copyright (C) 1995-1997 Simon G. Vogl
+ Copyright (C) 1998-1999 Frodo Looijaard <frodol@dds.nl>
+ Copyright (C) 2012-2017 Jean Delvare <jdelvare@suse.de>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301 USA.
*/
#ifndef LIB_I2C_SMBUS_H
diff --git a/lib/smbus.c b/lib/smbus.c
index 3a2c45a..df5a5ad 100644
--- a/lib/smbus.c
+++ b/lib/smbus.c
@@ -5,20 +5,10 @@
Copyright (C) 1998-1999 Frodo Looijaard <frodol@dds.nl>
Copyright (C) 2012-2013 Jean Delvare <jdelvare@suse.de>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301 USA.
*/
#include <errno.h>
--
2.14.4

View File

@ -0,0 +1,87 @@
From d062793e7aebde3ffee796dfd4180716632ae444 Mon Sep 17 00:00:00 2001
From: Jean Delvare <jdelvare@suse.de>
Date: Wed, 8 Nov 2017 22:17:43 +0100
Subject: [PATCH 2/3] tools: i2cbusses: Check the return value of snprintf
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It's very unlikely that these paths will ever be truncated, but
better safe than sorry.
Suggested by Uwe Kleine-König.
---
tools/i2cbusses.c | 34 ++++++++++++++++++++++++++++------
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/tools/i2cbusses.c b/tools/i2cbusses.c
index cb78cc7..41f5b6b 100644
--- a/tools/i2cbusses.c
+++ b/tools/i2cbusses.c
@@ -137,7 +137,7 @@ struct i2c_adap *gather_i2c_busses(void)
FILE *f;
char fstype[NAME_MAX], sysfs[NAME_MAX], n[NAME_MAX];
int foundsysfs = 0;
- int count=0;
+ int len, count = 0;
struct i2c_adap *adapters;
adapters = calloc(BUNCH, sizeof(struct i2c_adap));
@@ -220,18 +220,32 @@ struct i2c_adap *gather_i2c_busses(void)
/* this should work for kernels 2.6.5 or higher and */
/* is preferred because is unambiguous */
- snprintf(n, NAME_MAX, "%s/%s/name", sysfs, de->d_name);
+ len = snprintf(n, NAME_MAX, "%s/%s/name", sysfs, de->d_name);
+ if (len >= NAME_MAX) {
+ fprintf(stderr, "%s: path truncated\n", n);
+ continue;
+ }
f = fopen(n, "r");
/* this seems to work for ISA */
if(f == NULL) {
- snprintf(n, NAME_MAX, "%s/%s/device/name", sysfs, de->d_name);
+ len = snprintf(n, NAME_MAX, "%s/%s/device/name", sysfs,
+ de->d_name);
+ if (len >= NAME_MAX) {
+ fprintf(stderr, "%s: path truncated\n", n);
+ continue;
+ }
f = fopen(n, "r");
}
/* non-ISA is much harder */
/* and this won't find the correct bus name if a driver
has more than one bus */
if(f == NULL) {
- snprintf(n, NAME_MAX, "%s/%s/device", sysfs, de->d_name);
+ len = snprintf(n, NAME_MAX, "%s/%s/device", sysfs,
+ de->d_name);
+ if (len >= NAME_MAX) {
+ fprintf(stderr, "%s: path truncated\n", n);
+ continue;
+ }
if(!(ddir = opendir(n)))
continue;
while ((dde = readdir(ddir)) != NULL) {
@@ -240,8 +254,16 @@ struct i2c_adap *gather_i2c_busses(void)
if (!strcmp(dde->d_name, ".."))
continue;
if ((!strncmp(dde->d_name, "i2c-", 4))) {
- snprintf(n, NAME_MAX, "%s/%s/device/%s/name",
- sysfs, de->d_name, dde->d_name);
+ len = snprintf(n, NAME_MAX,
+ "%s/%s/device/%s/name",
+ sysfs, de->d_name,
+ dde->d_name);
+ if (len >= NAME_MAX) {
+ fprintf(stderr,
+ "%s: path truncated\n",
+ n);
+ continue;
+ }
if((f = fopen(n, "r")))
goto found;
}
--
2.14.3

View File

@ -0,0 +1,34 @@
From 066cc543547c7675a67f24b1281954619d300652 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
Date: Fri, 24 Nov 2017 10:40:01 +0100
Subject: [PATCH 3/3] py-smbus: Fix FSF address in smbusmodule.c
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The Free Software Foundation address was outdated. Discovered by
Fedora's rpmlint. The current address can be found at:
https://www.gnu.org/licenses/old-licenses/gpl-2.0.html#SEC4
Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
---
py-smbus/smbusmodule.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/py-smbus/smbusmodule.c b/py-smbus/smbusmodule.c
index 48a408b..b189106 100644
--- a/py-smbus/smbusmodule.c
+++ b/py-smbus/smbusmodule.c
@@ -13,7 +13,8 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
*/
#include <Python.h>
--
2.14.3

BIN
i2c-tools-4.0.tar.xz Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,11 +1,16 @@
Name: i2c-tools
Version: 4.3
Release: 3
Version: 4.0
Release: 12
Summary: A heterogeneous set of I2C tools for Linux
License: GPL-2.0-or-later and LGPL-2.1-only
License: GPLv2+ LGPLv2+
URL: https://i2c.wiki.kernel.org/index.php/I2C_Tools
Source0: https://www.kernel.org/pub/software/utils/i2c-tools/%{name}-%{version}.tar.xz
Patch0: 0001-i2c-tools-i2cbusses-Avoid-buffer-overflows-in-sysfs-.patch
Patch1: 0002-tools-i2cbusses-Check-the-return-value-of-snprintf.patch
Patch2: 0003-py-smbus-Fix-FSF-address-in-smbusmodule.c.patch
Patch3: 0001-libi2c-Mention-the-correct-license-in-source-files.patch
BuildRequires: perl-generators
BuildRequires: python3-devel
BuildRequires: gcc
@ -70,6 +75,9 @@ A collection of tools written in perl for use with i2c devices.
%build
make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" BUILD_STATIC_LIB=0 EXTRA=eeprog
pushd eepromer
make CFLAGS="$RPM_OPT_FLAGS -I../include" LDFLAGS="$RPM_LD_FLAGS"
popd
pushd py-smbus
CFLAGS="$RPM_OPT_FLAGS -I../include" LDFLAGS="$RPM_LD_FLAGS" \
%{__python3} setup.py build -b build-py3
@ -77,9 +85,14 @@ popd
%install
%make_install PREFIX=%{_prefix} BUILD_STATIC_LIB=0 \
%make_install prefix=%{_prefix} BUILD_STATIC_LIB=0 \
EXTRA=eeprog libdir=%{_libdir}
install -m 755 eepromer/{eepromer,eeprom} \
$RPM_BUILD_ROOT%{_sbindir}
install -m 644 eepromer/{eepromer,eeprom}.8 \
$RPM_BUILD_ROOT%{_mandir}/man8
# Rename README file
mv eepromer/README eepromer/README.programs
mv py-smbus/README py-smbus/README.py
mv eeprom/README eeprom/README.perl
@ -136,8 +149,8 @@ exit 0
%{_mandir}/man8/i2c*.8.gz
%{_mandir}/man8/eepro*.8.gz
%{_mandir}/man1/decode-*.1.gz
%{_mandir}/man3/libi2c.3.*
%doc CHANGES README
%doc eepromer/README*
%doc eeprog/README.eeprog
%doc py-smbus/README.py
%doc eeprom/README.perl
@ -153,17 +166,5 @@ exit 0
%{_sbindir}/i2c-stub*
%changelog
* Sun Apr 24 2022 zhouwenpei <zhouwenpei1@h-partners.com> - 4.3-3
- update license
* Wed Mar 30 2022 liusirui <liusirui@huawei.com> - 4.3-2
- add back missing README files
* Tue Nov 30 2021 zhouwenpei <zhouwenpei1@huawei.com> - 4.3-1
- Upgrade to Version 4.3
* Fri Jan 3 2020 openEuler Buildteam <buildteam@openeuler.org> - 4.1-1
- Upgrade to Version 4.1
* Wed Sep 19 2018 openEuler Buildteam <buildteam@openeuler.org> - 4.0-12
- Package init

View File

@ -1,5 +0,0 @@
version_control: git
src_repo: https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git
tag_prefix: ^v
seperator: .