diff options
author | Kåre Hampf | 2020-05-29 17:58:47 +0300 |
---|---|---|
committer | Kåre Hampf | 2020-05-29 17:58:47 +0300 |
commit | 8fc8e74ec26adc7eca86f28b99dc2133fa828061 (patch) | |
tree | 70fb4481d02de523541b6fa27ce256235b1a6a59 | |
parent | 40b29b135254a0797218a3ec028c07fddb997091 (diff) | |
download | aur-scanbd.tar.gz |
Fixed more PATH_MAX allocation issues
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 6 | ||||
-rw-r--r-- | strcpy-bounds.patch | 47 | ||||
-rw-r--r-- | string-bounds.patch | 140 |
4 files changed, 145 insertions, 52 deletions
@@ -1,7 +1,7 @@ pkgbase = scanbd pkgdesc = Scanner button daemon looking for scanner button pressed pkgver = 1.5.1 - pkgrel = 4 + pkgrel = 5 url = http://scanbd.sourceforge.net/ arch = x86_64 license = GPL2 @@ -9,7 +9,7 @@ pkgbase = scanbd depends = confuse backup = etc/scanbd/scanbd.conf source = https://downloads.sourceforge.net/scanbd/scanbd-1.5.1.tgz - source = strcpy-bounds.patch + source = string-bounds.patch sha256sums = b69ca5a474b81516d19c38082d949363c243df9ab9742315aaae499723267e5f sha256sums = SKIP @@ -4,13 +4,13 @@ pkgname=scanbd pkgver=1.5.1 -pkgrel=4 +pkgrel=5 pkgdesc="Scanner button daemon looking for scanner button pressed" arch=('x86_64') url="http://scanbd.sourceforge.net/" license=('GPL2') depends=('sane' 'confuse') -source=("https://downloads.sourceforge.net/scanbd/scanbd-$pkgver.tgz" "strcpy-bounds.patch") +source=("https://downloads.sourceforge.net/scanbd/scanbd-$pkgver.tgz" "string-bounds.patch") sha256sums=('b69ca5a474b81516d19c38082d949363c243df9ab9742315aaae499723267e5f' 'SKIP') backup=('etc/scanbd/scanbd.conf') @@ -37,7 +37,7 @@ prepare() { sed -i 's@\(debug-level =\)7$@\1 2@' conf/scanbd.conf sed -i 's@\(SANE_CONFIG_DIR=\)\(/etc/scanbd\)@\1\2/sane.d@' conf/scanbd.conf - patch --forward --strip=1 --input="${srcdir}/strcpy-bounds.patch" + patch --forward --strip=1 --input="${srcdir}/string-bounds.patch" } build() { diff --git a/strcpy-bounds.patch b/strcpy-bounds.patch deleted file mode 100644 index a82a9022e130..000000000000 --- a/strcpy-bounds.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -ruN 1.5.1/src/scanbd/config.c 1.5.1-patched/src/scanbd/config.c ---- 1.5.1/src/scanbd/config.c 2017-04-19 10:53:25.000000000 +0300 -+++ 1.5.1-patched/src/scanbd/config.c 2019-09-05 14:54:05.267421740 +0300 -@@ -102,8 +102,8 @@ - cfg = NULL; - } - -- char wd[PATH_MAX] = {}; -- char config_file[PATH_MAX] = {}; -+ char wd[PATH_MAX+1] = {}; -+ char config_file[PATH_MAX+1] = {}; - char* scanbd_conf_dir = NULL; - - // get current directory -diff -ruN 1.5.1/src/scanbd/scanbd.c 1.5.1-patched/src/scanbd/scanbd.c ---- 1.5.1/src/scanbd/scanbd.c 2017-04-19 10:53:25.000000000 +0300 -+++ 1.5.1-patched/src/scanbd/scanbd.c 2019-09-05 14:54:40.957142882 +0300 -@@ -350,7 +350,7 @@ - } - - // We do this here as debugging is only completely initialized here -- char prog_path[PATH_MAX] = ""; -+ char prog_path[PATH_MAX+1] = ""; - strncpy(prog_path, argv[0], PATH_MAX); - char *my_name = basename(prog_path); - if ( strncmp(my_name, NAME_MANAGER_MODE, PATH_MAX) == 0 ) { -diff -ruN 1.5.1/src/scanbd/slog.c 1.5.1-patched/src/scanbd/slog.c ---- 1.5.1/src/scanbd/slog.c 2017-04-19 10:53:25.000000000 +0300 -+++ 1.5.1-patched/src/scanbd/slog.c 2019-09-05 14:54:05.267421740 +0300 -@@ -26,7 +26,7 @@ - bool debug = false; - unsigned int debug_level = 0; - --static char lpre[LINE_MAX] = ""; -+static char lpre[LINE_MAX+1] = ""; - static int isInitialized = 0; - - void slog_init(const char *string) { -@@ -37,7 +37,7 @@ - void - slog(unsigned int level, const char *format, ...) { - va_list ap; -- char buffer[LINE_MAX] = ""; -+ char buffer[LINE_MAX+1] = ""; - - if (isInitialized == 0) { - slog_init(""); diff --git a/string-bounds.patch b/string-bounds.patch new file mode 100644 index 000000000000..cc2e72a3fc7e --- /dev/null +++ b/string-bounds.patch @@ -0,0 +1,140 @@ +diff --git a/src/scanbd/config.c b/src/scanbd/config.c +index 7fa9c2d..9399333 100644 +--- a/src/scanbd/config.c ++++ b/src/scanbd/config.c +@@ -102,8 +102,8 @@ void cfg_do_parse(const char *config_file_name) { + cfg = NULL; + } + +- char wd[PATH_MAX] = {}; +- char config_file[PATH_MAX] = {}; ++ char wd[PATH_MAX+1] = {}; ++ char config_file[PATH_MAX+1] = {}; + char* scanbd_conf_dir = NULL; + + // get current directory +@@ -148,7 +148,7 @@ void cfg_do_parse(const char *config_file_name) { + + char *make_script_path_abs(const char *script) { + +- char* script_abs = malloc(PATH_MAX); ++ char* script_abs = malloc(PATH_MAX+1); + assert(script_abs); + strncpy(script_abs, SCANBD_NULL_STRING, PATH_MAX); + +diff --git a/src/scanbd/dbus.c b/src/scanbd/dbus.c +index 428980c..33de735 100644 +--- a/src/scanbd/dbus.c ++++ b/src/scanbd/dbus.c +@@ -196,8 +196,8 @@ static void hook_device_ex(const char *param, const char *action_name, const cha + e += 1; + } + else { +- char buf[PATH_MAX]; +- char* ptr = getcwd(buf, PATH_MAX - 1); ++ char buf[PATH_MAX+1]; ++ char* ptr = getcwd(buf, PATH_MAX); + if (!ptr) { + slog(SLOG_ERROR, "can't get pwd"); + } +@@ -751,7 +751,7 @@ bool dbus_init(void) { + return false; + } + #else +- char match[PATH_MAX] = {}; ++ char match[PATH_MAX+1] = {}; + snprintf(match, PATH_MAX, "type='signal',interface='%s'", DBUS_HAL_INTERFACE); + slog(SLOG_ERROR, "dbus match %s", match); + dbus_bus_add_match(conn, match, &dbus_error); +diff --git a/src/scanbd/sane.c b/src/scanbd/sane.c +index b031904..48691c6 100644 +--- a/src/scanbd/sane.c ++++ b/src/scanbd/sane.c +@@ -957,8 +957,8 @@ static void* sane_poll(void* arg) { + e += 1; + } + else { +- char buf[PATH_MAX]; +- char* ptr = getcwd(buf, PATH_MAX - 1); ++ char buf[PATH_MAX+1]; ++ char* ptr = getcwd(buf, PATH_MAX); + if (!ptr) { + slog(SLOG_ERROR, "can't get pwd"); + } +diff --git a/src/scanbd/scanbd.c b/src/scanbd/scanbd.c +index feb73ae..3c8902c 100644 +--- a/src/scanbd/scanbd.c ++++ b/src/scanbd/scanbd.c +@@ -350,7 +350,7 @@ int main(int argc, char** argv) { + } + + // We do this here as debugging is only completely initialized here +- char prog_path[PATH_MAX] = ""; ++ char prog_path[PATH_MAX+1] = ""; + strncpy(prog_path, argv[0], PATH_MAX); + char *my_name = basename(prog_path); + if ( strncmp(my_name, NAME_MANAGER_MODE, PATH_MAX) == 0 ) { +diff --git a/src/scanbd/scanbuttond_loader.c b/src/scanbd/scanbuttond_loader.c +index 857834a..06b13f6 100644 +--- a/src/scanbd/scanbuttond_loader.c ++++ b/src/scanbd/scanbuttond_loader.c +@@ -29,11 +29,11 @@ + // this file is basicly the same as loader.c from the scanbuttond-project, + // but modified to meet the needs of scanbd + +-static char lib_dir[PATH_MAX] = SCANBD_NULL_STRING; ++static char lib_dir[PATH_MAX+1] = SCANBD_NULL_STRING; + + int scanbtnd_init() { + char *backends_dir = NULL; +- char backends_dir_abs[PATH_MAX] = SCANBD_NULL_STRING; ++ char backends_dir_abs[PATH_MAX+1] = SCANBD_NULL_STRING; + + backends_dir = cfg_getstr(cfg_getsec(cfg, C_GLOBAL), C_SCANBUTTONS_BACKENDS_DIR); + if ( backends_dir && (backends_dir[0] != '/')) { +@@ -83,7 +83,7 @@ backend_t* scanbtnd_load_backend(const char* filename){ + const char* error; + void* dll_handle; + +- char dll_path[PATH_MAX]; ++ char dll_path[PATH_MAX+1]; + strncpy(dll_path, lib_dir, PATH_MAX); + strncat(dll_path, "/", PATH_MAX - strlen(dll_path)); + strncat(dll_path, filename, PATH_MAX - strlen(dll_path)); +diff --git a/src/scanbd/scanbuttond_wrapper.c b/src/scanbd/scanbuttond_wrapper.c +index 02b7162..6bbb289 100644 +--- a/src/scanbd/scanbuttond_wrapper.c ++++ b/src/scanbd/scanbuttond_wrapper.c +@@ -605,8 +605,8 @@ void* scbtn_poll(void* arg) { + e += 1; + } + else { +- char buf[PATH_MAX]; +- char* ptr = getcwd(buf, PATH_MAX - 1); ++ char buf[PATH_MAX+1]; ++ char* ptr = getcwd(buf, PATH_MAX); + if (!ptr) { + slog(SLOG_ERROR, "can't get pwd"); + } +diff --git a/src/scanbd/slog.c b/src/scanbd/slog.c +index 09fe1de..17b04a3 100644 +--- a/src/scanbd/slog.c ++++ b/src/scanbd/slog.c +@@ -26,7 +26,7 @@ + bool debug = false; + unsigned int debug_level = 0; + +-static char lpre[LINE_MAX] = ""; ++static char lpre[LINE_MAX+1] = ""; + static int isInitialized = 0; + + void slog_init(const char *string) { +@@ -37,7 +37,7 @@ void slog_init(const char *string) { + void + slog(unsigned int level, const char *format, ...) { + va_list ap; +- char buffer[LINE_MAX] = ""; ++ char buffer[LINE_MAX+1] = ""; + + if (isInitialized == 0) { + slog_init(""); |