Projects
openEuler:24.03:SP1:Everything
policycoreutils
_service:tar_scm:backport-setfiles-avoid-unsign...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-setfiles-avoid-unsigned-integer-underflow.patch of Package policycoreutils
From fc2e9318d0a1b2ec331f6af25e70358f130d003b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com> Date: Tue, 19 Dec 2023 17:09:33 +0100 Subject: [PATCH] setfiles: avoid unsigned integer underflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit While well-defined unsigned integer underflow might signal a logic mistake or processing of unchecked user input. Please Clang's undefined behavior sanitizer: restore.c:91:37: runtime error: unsigned integer overflow: 1 - 2 cannot be represented in type 'unsigned long' Signed-off-by: Christian Göttsche <cgzones@googlemail.com> Acked-by: James Carter <jwcart2@gmail.com> --- policycoreutils/setfiles/restore.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/policycoreutils/setfiles/restore.c b/policycoreutils/setfiles/restore.c index 6131f46a..d045e948 100644 --- a/policycoreutils/setfiles/restore.c +++ b/policycoreutils/setfiles/restore.c @@ -77,8 +77,8 @@ int process_glob(char *name, struct restore_opts *opts, size_t nthreads, long unsigned *skipped_errors) { glob_t globbuf; - size_t i = 0; - int len, rc, errors; + size_t i, len; + int rc, errors; memset(&globbuf, 0, sizeof(globbuf)); @@ -88,10 +88,10 @@ int process_glob(char *name, struct restore_opts *opts, size_t nthreads, return errors; for (i = 0; i < globbuf.gl_pathc; i++) { - len = strlen(globbuf.gl_pathv[i]) - 2; - if (len > 0 && strcmp(&globbuf.gl_pathv[i][len--], "/.") == 0) + len = strlen(globbuf.gl_pathv[i]); + if (len > 2 && strcmp(&globbuf.gl_pathv[i][len - 2], "/.") == 0) continue; - if (len > 0 && strcmp(&globbuf.gl_pathv[i][len], "/..") == 0) + if (len > 3 && strcmp(&globbuf.gl_pathv[i][len - 3], "/..") == 0) continue; rc = selinux_restorecon_parallel(globbuf.gl_pathv[i], opts->restorecon_flags, -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2