From 63fc0f309113a9344f098548cce85d4621772cc3 Mon Sep 17 00:00:00 2001 From: Andrew Savchenko Date: Fri, 20 Feb 2015 18:36:53 +0000 Subject: [PATCH] Apply upstream fixes to parser bugs Signed-off-by: Andrew Savchenko Package-Manager: portage-2.2.17/cvs/Linux x86_64 Manifest-Sign-Key: 0x565953B95372756C --- app-admin/clsync/ChangeLog | 8 +- app-admin/clsync/Manifest | 31 +-- app-admin/clsync/clsync-0.4-r1.ebuild | 115 +++++++++++ .../clsync/files/clsync-0.4-retries-arg.patch | 13 ++ .../clsync/files/clsync-0.4-strtol.patch | 179 ++++++++++++++++++ 5 files changed, 331 insertions(+), 15 deletions(-) create mode 100644 app-admin/clsync/clsync-0.4-r1.ebuild create mode 100644 app-admin/clsync/files/clsync-0.4-retries-arg.patch create mode 100644 app-admin/clsync/files/clsync-0.4-strtol.patch diff --git a/app-admin/clsync/ChangeLog b/app-admin/clsync/ChangeLog index cccf8ba15038..aa576823ad4c 100644 --- a/app-admin/clsync/ChangeLog +++ b/app-admin/clsync/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for app-admin/clsync # Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/clsync/ChangeLog,v 1.1 2015/02/11 03:39:24 bircoph Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/clsync/ChangeLog,v 1.2 2015/02/20 18:36:49 bircoph Exp $ + +*clsync-0.4-r1 (20 Feb 2015) + + 20 Feb 2015; Andrew Savchenko +clsync-0.4-r1.ebuild, + +files/clsync-0.4-retries-arg.patch, +files/clsync-0.4-strtol.patch: + Apply upstream fixes to parser bugs. *clsync-0.4 (11 Feb 2015) diff --git a/app-admin/clsync/Manifest b/app-admin/clsync/Manifest index 5b7c19c19879..af4454660210 100644 --- a/app-admin/clsync/Manifest +++ b/app-admin/clsync/Manifest @@ -5,6 +5,8 @@ AUX clsync-0.4-direct_mode.patch 1782 SHA256 fc429bc6b830c76233d083b5ed882f4c9db AUX clsync-0.4-gio.patch 1254 SHA256 2bc5cc03cd456ed09879e77e963e17bedb05d3deaff77f4d18bdc67c521773f1 SHA512 888f0941dcfd8843007afee889c005c613d731750882b0acbadceb08b514f177b9b75f992827050a40247002c8d29d7fcf4e75eabafe6eb54fc1d05e30893ffd WHIRLPOOL 5df5185fd97bb4d77297e40e1722b4ddfbb27c444c6a506939ee9a3075be0200aeca3c0f08f62e9650a04583cd55f1d05c106a77b7f2eb2e9af3621f9597d4f2 AUX clsync-0.4-handler_path.patch 822 SHA256 fcd4f9ff6308e18984dd4a97bda2d3bd9c9de8bd37a9ef758d6e0ba2485c70c6 SHA512 de4a7fa17e158f5527a4b28e90414ee8513a140fed2f62815578e9e97550662c0cc7d36d3debd366c7543cb879763443dc839356640647d82f6709c954c4f0ad WHIRLPOOL 9f18153267d70f4964e8d7a14b87e3a21056874254874452a9895bc3613515f5f9d059b5c10bb8d7ffd0077e5eb00c8fcbd52059807dc65553875d59e05d3777 AUX clsync-0.4-hl_locks.patch 899 SHA256 ee85116d992dd9e089e2e0a3f0bfbc5502705e4de08953b13a2bd00ed259d3bf SHA512 279bb3560a37a163763d9de09c894d8d98e79ed32e3f1c2f2231d567b0492f93c078a560296c706536ddabddf05e4218f106a0f271f8bcd3c9b18cee153083d0 WHIRLPOOL de98b88abb9089456157366b9145433ae371176cd81b34e3bc5a72852b238f6b7ed98610e3259831389eacd7990ff248d7c890b87a93a4afcdeb4f287d1f631b +AUX clsync-0.4-retries-arg.patch 563 SHA256 d846c0e0e33280ec24c8e20e4006d72746a39a5f4b92fcdb272bf5abdc16fef8 SHA512 14fa4bdf092dbbce8f2ed246a3746c6d590e3f728a70c103a29f956485c3ac223c5cbf9bb4d5e72f0e7cfa08ffaa86fb63812b6f7972a2b29ef8da195e8b9944 WHIRLPOOL 988fb71f5a51ce423f0e78e33f6a71b5cfcd7f4098eee0990745d1ae472c4aa8b1cd709b6dbe7f56069f3ddf235dac97aef7f0ce62c36ee707268b84c7f0939b +AUX clsync-0.4-strtol.patch 5902 SHA256 04245b1711daa28d883b63e0f0778e60121a6841ffef49e219a62f9816149421 SHA512 930f36dc99b1c2e121c63ad5a6c4aa07f2025261f76522c635a63e4370dd2c225ffb7ca10179bb364e2668d0d4eed1f42e8d497bb03a3f8a7a94f76a951e7781 WHIRLPOOL 565b0e5e6cb6a0e72ff7a4e72c4a586401e9352ebd347cca2b34e8ea87d078f2cebd69a10c2b3e3bb3e8dfa907ef059b3c0b47e0c8677a7f365b9174448a2f45 AUX clsync-0.4-unset_env.patch 1820 SHA256 830f7d495be48faa1b13ae9794371561808dd904cb45192e40f790b33dc32475 SHA512 e89bd1834180487bb0feecfbac90a6512531547fbaa3053fe9907e776a2212e5dc0f912c7a59bccf9f15058d991dbe03f9ae7c89a741d6807c9df4fa930af915 WHIRLPOOL b058e0a41535770c81232e4587856f69e152dbae1683929c7fa3bf171db7d76cd67456bf4e2fe3e2902da6d72ba2720990247eac8a3fef6c8ae250004eee2fd3 AUX clsync-0.4-unshare-configure.patch 1198 SHA256 c60e2f8e33e1ca04d27e8887982d83eb5efb8a3f3f6871f97feba931aaa0db74 SHA512 c0be6a085a33e3c09bfe52fc5aff3a1136fbbdde7cf928bd1ff21c7e435ae8562a626ed7d561c83e74580f17e2ad1c61be778d0a7f01b2ad0890a9d5cc1e54cd WHIRLPOOL 826d597da90d8f71b3ff902c5c55bbd3ae82bae33157f99469bfe8dec4ad93f16a1f2d10c0b78f561c58f6d01832ed2bbc2267ab619e21bd19c939034ae8b401 AUX clsync-0.4-unshare-ifdef.patch 989 SHA256 2fc98fa742ed24068af39c950eb7fa33a048a2cbb3aab44b074928cd86c5cefb SHA512 2a6e98a2ea8d1dd663fdaf6eed0d6706c61b646c4178ca8be5598d1d6a3dd8023b92f02858f7324c5ceab601ed5c8ec1ee6bcc7210664cd57dc281a116bbde3c WHIRLPOOL 9535ac8e746e4ce980d4f17c05f554e55f5ab717d79e20ba09751f176383e46c2b52777cccce10f28422b4d459f0ef8c8a5f900c4857994a8bab5c6108bd5e27 @@ -14,23 +16,24 @@ AUX clsync.conf 589 SHA256 1a8689b86cf9475ef72ef42a623a1bb1ae55abff31578dcfdf353 AUX clsync.confd 645 SHA256 ae7e9cacf618f9a32a4a1580580a901831aaaa0abb9de9e0379fbcc6a7359b0d SHA512 75dcc49d51f6da94d42eb501f1ad2868f163405dd7aa933f4c8078ec18f5b54eb6c66ff796ee744f7751699162627af843edbe5de5adf99c23712cedaebaddc5 WHIRLPOOL 06289c7645430d10b242983daa9cd2d4c2f327b34ede308012354947c64c654a7864586743ae6de7c02770a8b1c22de04b63404a6431b317b328ac6ac1e121ce AUX clsync.initd 671 SHA256 1efaac7d85e4f22e3b346af1451cac8574549743df7460feb664d4e57d818234 SHA512 61e8ca7f1e04cb2ff4d3e374c9419112bc05e6ffa77b40505f5a5ad7e215d8d5c2961795b804afd19ec153945bc004bf0611cb15e1ffae44746c6877805d967a WHIRLPOOL c605b0cb37e4bfac4fbb652d560515df9890d872e10616d2b039898d382abbcc8a5c6185f8556ac32d7d9e77198cc15d53490e33403a14fa5b9a6b656b912a29 DIST clsync-0.4.tar.gz 253396 SHA256 6f0ce7a5f61fbb50db53b787b62cf5347870f3be315acb02c4aee6b76206d19e SHA512 9b17f5f8f0bfc48531f3d8cb4f1c1edd3116e0b7d140e8ab2465dd1c590521c9857202ed3f36466f13fb3309abb9232fb4acbe25b5652914a816fac498f74a48 WHIRLPOOL 18ae12df2d7e0403b21c5d4ab7352cd81446729d94fb300a799b98dad9f88aeaa98deb2ba5f52858d3b6ba7406d777e53e97dae5c3a4802a229511db9c8a3482 +EBUILD clsync-0.4-r1.ebuild 3457 SHA256 4303d9a9a12aa718994bc2ff98598a481ea3436fed71f2c82a5c8787b66fc024 SHA512 9e22522f2c1d5bbd694794c5cf27716ab2e138b30e770d4af16e26d1274d5a18ab2da1172fa938a3faec2691c04560736d64cb999428773bff64ad1b428e9606 WHIRLPOOL 3c3b37004e5509effbe80ca490798335001590e89688b49319e9d51e7a7f118ef3251cf8af5154a3172be843bfe179318bab0d7a992bb4d0b136797739cff8f3 EBUILD clsync-0.4.ebuild 3377 SHA256 5faa09012d163d4a25e27c3c8b50d2e5ebbf551dfdc9fe809c24f289edf4a9dd SHA512 abcca419225b6c446555abf99b86760c716397842d7c02d9ecaa22774edd03b9f2739c6b5325d3646914264fad4e44e4047fafabfd8e0f17a43aff8bd3813b68 WHIRLPOOL c96c4196b7935013a1291c3a952f8d8fcd6618a06bfcaa2f4cf1b7bddcc9e0a65ab370d0a79f371bb6da60c8c47e692a1428c89cd93a7f63670d246d7d6202f3 -MISC ChangeLog 767 SHA256 27efaf9b27065358c2c7c3a9b0a05a42878c80dfe46f0e29e02113538b5960ef SHA512 623d87b0fe6aec6ec9adc3e4c0c4b50a1093e99b9b6bddd3289afc3250d71e445fff4a98ed08d29b3b86b5637b1b40ce46403a396043374b2f1b680d5df60174 WHIRLPOOL 4fef9820eadcd44d78de738148690fd54cf77d07b6b307b96ca4e2f2ead7dc2012ea96a5859f4f461dfa6f95e61c8b4aec600e415ad5ec97949f7ab07997e5fa +MISC ChangeLog 984 SHA256 5cab71457af3378766c098cc87c15db328111bd38bb240097c1cdb5fdf594c0f SHA512 17a422ff074b7dfaef747ab3ad032000347890af58d434811f921903ef904f9e9ee3b815caa840ed4c639b222d9894a021b90a120731aef612ad4ce62fc4dd46 WHIRLPOOL 14c9493423b49652edc8c45b8db04711ff2e06f7e5fc0655c98687cbaba6d6f0046c61dbdff3d545dc43a0dd3fc140ddb37386a101cd3cf84ac3b86ab8cfd577 MISC metadata.xml 1572 SHA256 6d90b9c0f0b37dffda05a9b5ca6d02f05ce0362eb8bf8fbe19e90c3f77570940 SHA512 5be148bc1f8b1ca76e2b5713bf5a9ecfc88c4c101620fbbf1cb4efcbe7b33a923038ea0c2d5b2d66689552a04b865c4b0625887baa98a80d64f486208143ce67 WHIRLPOOL e1cd84b85b5ac476407930f14217cfed16f67d3aeb221e61dffa94c688b69ada4f29f7a7e9f4f2b610f8730c10d700bff9148d6b871ca9d98e76eaa0c5de68c8 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 -iQIcBAEBCAAGBQJU2s7tAAoJEPZTWjO6HuSN6FYP/1Re+RHhoAZXdJ1kEatu6Kfw -rmcy8A0qJk2S12Jszy+E1m2JCy4kEr9e5yc9+xsAOcG5nyCQWsbHg7TxrfLP9gao -DqiE0M+GS36pmtVjnRoh/upJRrnSTwL9b4cQyyopgMgFp59s8ea7gPuL1ZixkQ5N -6poAQQTLurpzV0Mw6lPkMLbubQyXByExP8wz/Fzeuq2X6svSOxXYVB9wcwD5mk8r -9S6FiZuTqA6Rhfahdn6ZXdQbLFgkzMRg/r7/b+o0Bpi8whmEekmbXYqq3cdT9rZy -7JkHQ/V+0IpJTAbH29y8lL+sdezySN4h555sTFqBCQjrak0C+lAdX1DzPQjlPq6i -2+L5Cc81Ru2jFYPaQDiQ7bW8pL8xNzEYDWXN4OD1SQMZzw7ux2/hg3qRmMkNw8JJ -S/Ij03ThTVUUVJ4QfcI7rUb1GBgx7Smx4sm9I/p0C73VBPzEiGLB+XeKKC0rxJYo -aDOzTdxlrUWjs+KrlJA3i5cycW5XqFBV8zpZ/hGXkOWXz+iVnbkoeEt/nFs9SjUS -TAHjlRec9p5IRw6pi68NIT/PcmVIN4nn2AuIRKN8SJYx989+wLMbuJj0lgeF8MWk -Cz8IxPU8YO7imG1z8yJJxSolXa9S0yI38j4Ojl679eiTtsE097fIQ7aBLhLCFjza -nI6GvRJ9yxbVr1rPPbbE -=W/gP +iQIcBAEBCAAGBQJU537CAAoJEPZTWjO6HuSNNlEQALxU+wcYxWWc9LKH0oyTw6zQ +UJdgpgWqW6E8OwHntVqyQ5EUP3XuplakxC/s3UIyvUhs1M679WE9p4Nw7O+qzAn1 +sq0eVWculDHs5p8GRLzyzsI6DQL8O6AUjND/YJsmLBtJMc4JKpvCkaQrcW+49+2B +psLjEgHbrKB2gwwKIYbFlzi6fOIBw1j9Z2LLxVVjFxZ4fzm7KZwv58cVZO/WDuI4 +rsqLgntARao5ArrcS5a4XjNLNT7u3wMHioS13Vi3Q1byZfYjGRYbMq+mLf2/8+nb +2OHG04TTfehTPKnr1ZOWW9ekfXr0T+Nf8bSop1uUAq6lnHtHC4mR4p9SyLHNvLrk +6JQyaZpApHALoF0sNVMfXUy1oP4ozt5jYRSi555FN2Njgf+aAQkbN0MYZk+W0ILB +9mZvsRX6gQwD8IQ6V7AGUjhGmFll3Mxpu7yrj/XgUfYnvMIndtUSRkB5M58Vw0nV +oB8O7sYTcXSnGNHXIFHF53CIkS0tkdbtzfceGKJrB4vLHhEB14LE86qnTFbfPSG3 +M8fZe9L/It5S1LACUVSLTKqQ04iTNgHNk7AKPVR1f2aUJMkUAZu+XLKxkXVaVZuW +Djybvfn4kR7hpD/Zl/MQ3Gg0iIYngUn2NoXpbn8ohqheiAAss2aUohR7ScHMfYML +8NNXU8rdhSxlN6/81wNU +=hYOF -----END PGP SIGNATURE----- diff --git a/app-admin/clsync/clsync-0.4-r1.ebuild b/app-admin/clsync/clsync-0.4-r1.ebuild new file mode 100644 index 000000000000..d386b3213fc3 --- /dev/null +++ b/app-admin/clsync/clsync-0.4-r1.ebuild @@ -0,0 +1,115 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/clsync/clsync-0.4-r1.ebuild,v 1.1 2015/02/20 18:36:49 bircoph Exp $ + +EAPI=5 + +if [[ ${PV} == "9999" ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/xaionaro/${PN}.git" +else + SRC_URI="https://github.com/xaionaro/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~x86" +fi + +inherit autotools eutils linux-info + +DESCRIPTION="Live sync tool based on inotify, written in GNU C" +HOMEPAGE="https://github.com/xaionaro/clsync http://ut.mephi.ru/oss/clsync" +LICENSE="GPL-3+" +SLOT="0" +IUSE="+caps cluster control-socket cgroups debug doc +examples +extra-hardened gio hardened +highload-locks +inotify mhash +namespaces seccomp" + +REQUIRED_USE=" + || ( gio inotify ) + extra-hardened? ( hardened ) + mhash? ( cluster )" + +RDEPEND=" + dev-libs/glib:2 + cgroups? ( dev-libs/libcgroup ) + mhash? ( app-crypt/mhash ) +" +DEPEND="${RDEPEND} + virtual/pkgconfig + doc? ( ~app-doc/clsync-docs-${PV} ) +" + +pkg_pretend() { + use namespaces && CONFIG_CHECK="~NAMESPACES ~UTS_NS ~IPC_NS ~USER_NS ~PID_NS ~NET_NS" + use seccomp && CONFIG_CHECK+=" ~SECCOMP" + check_extra_config +} + +src_prepare() { + # upstream fixes for 0.4 + epatch \ + "${FILESDIR}/${P}-gio.patch" \ + "${FILESDIR}/${P}-unshare-configure.patch" \ + "${FILESDIR}/${P}-unshare-ifdef.patch" \ + "${FILESDIR}/${P}-version.patch" \ + "${FILESDIR}/${P}-direct_mode.patch" \ + "${FILESDIR}/${P}-handler_path.patch" \ + "${FILESDIR}/${P}-hl_locks.patch" \ + "${FILESDIR}/${P}-unset_env.patch" \ + "${FILESDIR}/${P}-unused-deps.patch" \ + "${FILESDIR}/${P}-retries-arg.patch" \ + "${FILESDIR}/${P}-strtol.patch" + eautoreconf +} + +src_configure() { + local harden_level=0 + use hardened && harden_level=1 + use extra-hardened && harden_level=2 + + econf \ + --docdir="${EPREFIX}/usr/share/doc/${PF}" \ + --disable-socket-library \ + --enable-clsync \ + --enable-paranoid=${harden_level} \ + --without-bsm \ + --without-kqueue \ + $(use_enable caps capabilities) \ + $(use_enable cluster) \ + $(use_enable control-socket socket) \ + $(use_enable debug) \ + $(use_enable highload-locks) \ + $(use_enable namespaces unshare) \ + $(use_enable seccomp) \ + $(use_with cgroups libcgroup) \ + $(use_with gio gio lib) \ + $(use_with inotify inotify native) \ + $(use_with mhash) +} + +src_install() { + emake DESTDIR="${D}" install + + # remove unwanted docs + rm "${ED}/usr/share/doc/${PF}/LICENSE" || die "failed to cleanup docs" + use examples || rm -r "${ED}/usr/share/doc/${PF}/examples" || die "failed to remove examples" + + newinitd "${FILESDIR}/${PN}.initd" "${PN}" + newconfd "${FILESDIR}/${PN}.confd" "${PN}" + + # filter rules and sync scripts are supposed to be here + keepdir "${EPREFIX}/etc/${PN}" + insinto "/etc/${PN}" + newins "${FILESDIR}/${PN}.conf" "${PN}.conf" +} + +pkg_postinst() { + einfo "${PN} is just a convenient way to run synchronization tools on live data," + einfo "it doesn't copy data itself, so you need to install software to do actual" + einfo "data transfer. Usually net-misc/rsync is a good choise, but ${PN} is" + einfo "is flexible enough to use any user tool, see manual page for details." + einfo + einfo "${PN} init script can be multiplexed, to use symlink init script to" + einfo "othername and use conf.d/othername to configure it." + einfo + einfo "If you're interested in improved security, enable" + einfo "USE=\"caps cgroups hardened namespaces seccomp\"" +} diff --git a/app-admin/clsync/files/clsync-0.4-retries-arg.patch b/app-admin/clsync/files/clsync-0.4-retries-arg.patch new file mode 100644 index 000000000000..575a53edf486 --- /dev/null +++ b/app-admin/clsync/files/clsync-0.4-retries-arg.patch @@ -0,0 +1,13 @@ +diff --git a/main.c b/main.c +index 176e1f4..48aee6a 100644 +--- a/main.c ++++ b/main.c +@@ -116,7 +116,7 @@ static const struct option long_options[] = + {"cgroup-group-name", required_argument, NULL, CG_GROUPNAME}, + #endif + {"threading", required_argument, NULL, THREADING}, +- {"retries", optional_argument, NULL, RETRIES}, ++ {"retries", required_argument, NULL, RETRIES}, + {"ignore-failures", optional_argument, NULL, IGNOREFAILURES}, + {"exit-on-sync-skipping",optional_argument, NULL, EXITONSYNCSKIP}, + {"output", required_argument, NULL, OUTPUT_METHOD}, diff --git a/app-admin/clsync/files/clsync-0.4-strtol.patch b/app-admin/clsync/files/clsync-0.4-strtol.patch new file mode 100644 index 000000000000..9e95bbb3290b --- /dev/null +++ b/app-admin/clsync/files/clsync-0.4-strtol.patch @@ -0,0 +1,179 @@ +commit 41283d1359b652c728ca37406a33e62e8541bdda +Author: Andrew Savchenko +Date: Fri Feb 20 21:04:48 2015 +0300 + + parser: check correctness of str to int conversions. + +diff --git a/main.c b/main.c +index 48aee6a..d057489 100644 +--- a/main.c ++++ b/main.c +@@ -808,15 +808,33 @@ static int synchandler_arg1(char *arg, size_t arg_len, void *_ctx_p) { + return synchandler_arg(arg, arg_len, _ctx_p, SHARGS_INITIAL); + } + +-int parse_customsignals(ctx_t *ctx_p, char *arg) { ++/* strtol wrapper with error checks */ ++static inline long xstrtol(const char *str, int *err) { ++ long res; ++ char *endptr; ++ ++ res = strtol(str, &endptr, 0); ++ if (errno || *endptr) { ++ error("argument \"%s\" can't be parsed as a number", str); ++ *err = EINVAL; ++ } ++ return res; ++} ++ ++static inline int parse_customsignals(ctx_t *ctx_p, char *arg) { + char *ptr = arg, *start = arg; ++ int ret = 0; + unsigned int signal; + do { + switch (*ptr) { + case 0: + case ',': + case ':': +- signal = (unsigned int)atoi(start); ++ signal = (unsigned int)xstrtol(start, &ret); ++ if (ret) { ++ errno = ret; ++ return errno; ++ } + if (signal == 0) { + // flushing the setting + int i = 0; +@@ -883,7 +901,8 @@ int parse_customsignals(ctx_t *ctx_p, char *arg) { + return 0; + } + +-int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t paramsource) { ++static int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t paramsource) { ++ int ret = 0; + #ifdef _DEBUG_FORCE + fprintf(stderr, "Force-Debug: parse_parameter(): %i: %i = \"%s\"\n", paramsource, param_id, arg); + #endif +@@ -962,7 +981,7 @@ int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t pa + ctx_p->flags[param_id]++; + + if (pwd == NULL) { +- ctx_p->uid = (unsigned int)atol(arg); ++ ctx_p->uid = (unsigned int)xstrtol(arg, &ret); + break; + } + +@@ -974,7 +993,7 @@ int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t pa + ctx_p->flags[param_id]++; + + if (grp == NULL) { +- ctx_p->gid = (unsigned int)atol(arg); ++ ctx_p->gid = (unsigned int)xstrtol(arg, &ret); + break; + } + +@@ -1028,7 +1047,7 @@ int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t pa + ctx_p->flags[param_id]++; + + if (pwd == NULL) { +- ctx_p->synchandler_uid = (unsigned int)atol(arg); ++ ctx_p->synchandler_uid = (unsigned int)xstrtol(arg, &ret); + break; + } + +@@ -1040,7 +1059,7 @@ int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t pa + ctx_p->flags[param_id]++; + + if (grp == NULL) { +- ctx_p->synchandler_gid = (unsigned int)atol(arg); ++ ctx_p->synchandler_gid = (unsigned int)xstrtol(arg, &ret); + break; + } + +@@ -1233,7 +1252,7 @@ int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t pa + ctx_p->pidfile = arg; + break; + case RETRIES: +- ctx_p->retries = (unsigned int)atol(arg); ++ ctx_p->retries = (unsigned int)xstrtol(arg, &ret); + break; + case THREADING: { + char *value, *arg_orig = arg; +@@ -1279,22 +1298,22 @@ int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t pa + ctx_p->cluster_mcastipaddr = arg; + break; + case CLUSTERMCASTIPPORT: +- ctx_p->cluster_mcastipport = (uint16_t)atoi(arg); ++ ctx_p->cluster_mcastipport = (uint16_t)xstrtol(arg, &ret); + break; + case CLUSTERTIMEOUT: +- ctx_p->cluster_timeout = (unsigned int)atol(arg); ++ ctx_p->cluster_timeout = (unsigned int)xstrtol(arg, &ret); + break; + case CLUSTERNODENAME: + ctx_p->cluster_nodename = arg; + break; + case CLUSTERHDLMIN: +- ctx_p->cluster_hash_dl_min = (uint16_t)atoi(arg); ++ ctx_p->cluster_hash_dl_min = (uint16_t)xstrtol(arg, &ret); + break; + case CLUSTERHDLMAX: +- ctx_p->cluster_hash_dl_max = (uint16_t)atoi(arg); ++ ctx_p->cluster_hash_dl_max = (uint16_t)xstrtol(arg, &ret); + break; + case CLUSTERSDLMAX: +- ctx_p->cluster_scan_dl_max = (uint16_t)atoi(arg); ++ ctx_p->cluster_scan_dl_max = (uint16_t)xstrtol(arg, &ret); + break; + #endif + case OUTLISTSDIR: +@@ -1334,16 +1353,16 @@ int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t pa + break; + } + case SYNCDELAY: +- ctx_p->syncdelay = (unsigned int)atol(arg); ++ ctx_p->syncdelay = (unsigned int)xstrtol(arg, &ret); + break; + case DELAY: +- ctx_p->_queues[QUEUE_NORMAL].collectdelay = (unsigned int)atol(arg); ++ ctx_p->_queues[QUEUE_NORMAL].collectdelay = (unsigned int)xstrtol(arg, &ret); + break; + case BFILEDELAY: +- ctx_p->_queues[QUEUE_BIGFILE].collectdelay = (unsigned int)atol(arg); ++ ctx_p->_queues[QUEUE_BIGFILE].collectdelay = (unsigned int)xstrtol(arg, &ret); + break; + case BFILETHRESHOLD: +- ctx_p->bfilethreshold = (unsigned long)atol(arg); ++ ctx_p->bfilethreshold = (unsigned long)xstrtol(arg, &ret); + break; + case CANCEL_SYSCALLS: { + char *subopts = arg; +@@ -1412,10 +1431,10 @@ int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t pa + break; + } + case RSYNCINCLIMIT: +- ctx_p->rsyncinclimit = (unsigned int)atol(arg); ++ ctx_p->rsyncinclimit = (unsigned int)xstrtol(arg, &ret); + break; + case SYNCTIMEOUT: +- ctx_p->synctimeout = (unsigned int)atol(arg); ++ ctx_p->synctimeout = (unsigned int)xstrtol(arg, &ret); + break; + case PREEXITHOOK: + if (strlen(arg)) { +@@ -1611,13 +1630,13 @@ int parse_parameter(ctx_t *ctx_p, uint16_t param_id, char *arg, paramsource_t pa + if (arg == NULL) + ctx_p->flags[param_id]++; + else +- ctx_p->flags[param_id] = atoi(arg); ++ ctx_p->flags[param_id] = xstrtol(arg, &ret); + #ifdef _DEBUG_FORCE + fprintf(stderr, "Force-Debug: flag %i is set to %i\n", param_id&0xff, ctx_p->flags[param_id]); + #endif + break; + } +- return 0; ++ return ret; + } + + int arguments_parse(int argc, char *argv[], struct ctx *ctx_p) { -- 2.26.2