From: "Mike Frysinger (vapier)" <vapier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] gentoo-projects commit in pax-utils: scanelf.c
Date: Thu, 20 Mar 2014 08:06:01 +0000 (UTC) [thread overview]
Message-ID: <20140320080601.A80E92004C@flycatcher.gentoo.org> (raw)
vapier 14/03/20 08:06:01
Modified: scanelf.c
Log:
scanelf: convert -E option to use array_t
this avoids silently (and wrongly) truncating the options given to -E. it also makes the code a lot easier to handle.
#504340 by David Binderman
Revision Changes Path
1.262 pax-utils/scanelf.c
file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/scanelf.c?rev=1.262&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/scanelf.c?rev=1.262&content-type=text/plain
diff : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/scanelf.c?r1=1.261&r2=1.262
Index: scanelf.c
===================================================================
RCS file: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v
retrieving revision 1.261
retrieving revision 1.262
diff -u -r1.261 -r1.262
--- scanelf.c 20 Mar 2014 07:59:27 -0000 1.261
+++ scanelf.c 20 Mar 2014 08:06:01 -0000 1.262
@@ -1,13 +1,13 @@
/*
* Copyright 2003-2012 Gentoo Foundation
* Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.261 2014/03/20 07:59:27 vapier Exp $
+ * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.262 2014/03/20 08:06:01 vapier Exp $
*
* Copyright 2003-2012 Ned Ludd - <solar@gentoo.org>
* Copyright 2004-2012 Mike Frysinger - <vapier@gentoo.org>
*/
-static const char rcsid[] = "$Id: scanelf.c,v 1.261 2014/03/20 07:59:27 vapier Exp $";
+static const char rcsid[] = "$Id: scanelf.c,v 1.262 2014/03/20 08:06:01 vapier Exp $";
const char argv0[] = "scanelf";
#include "paxinc.h"
@@ -18,7 +18,7 @@
static int file_matches_list(const char *filename, char **matchlist);
/* variables to control behavior */
-static char *match_etypes = NULL;
+static array_t _match_etypes = array_init_decl, *match_etypes = &_match_etypes;
static array_t _ldpaths = array_init_decl, *ldpaths = &_ldpaths;
static char scan_ldpath = 0;
static char scan_envpath = 0;
@@ -1550,6 +1550,8 @@
static int scanelf_elf(const char *filename, int fd, size_t len)
{
int ret = 1;
+ size_t n;
+ const char *match_etype;
elfobj *elf;
/* verify this is real ELF */
@@ -1568,20 +1570,12 @@
break;
default: break;
}
- if (match_etypes) {
- char sbuf[126];
- strncpy(sbuf, match_etypes, sizeof(sbuf));
- if (strchr(match_etypes, ',') != NULL) {
- char *p;
- while ((p = strrchr(sbuf, ',')) != NULL) {
- *p = 0;
- if (etype_lookup(p+1) == get_etype(elf))
- goto label_ret;
- }
- }
- if (etype_lookup(sbuf) != get_etype(elf))
- goto label_done;
- }
+
+ array_for_each(match_etypes, n, match_etype)
+ if (etype_lookup(match_etype) == get_etype(elf))
+ goto label_ret;
+ if (array_cnt(match_etypes))
+ goto label_done;
label_ret:
ret = scanelf_elfobj(elf);
@@ -2080,6 +2074,16 @@
flags &= ~PF_NO##flag; \
flags |= PF_##flag; \
}
+static void parse_delimited(array_t *arr, char *arg, const char *delim)
+{
+ char *ele = strtok(arg, delim);
+ if (!ele) /* edge case: -s '' */
+ xarraypush_str(arr, "");
+ while (ele) {
+ xarraypush_str(arr, ele);
+ ele = strtok(NULL, delim);
+ }
+}
static int parseargs(int argc, char *argv[])
{
int i;
@@ -2103,7 +2107,8 @@
from_file = optarg;
break;
case 'E':
- match_etypes = optarg;
+ /* historically, this was comma delimited */
+ parse_delimited(match_etypes, optarg, ",");
break;
case 'M':
match_bits = atoi(optarg);
@@ -2126,17 +2131,10 @@
case 'k':
xarraypush_str(find_section_arr, optarg);
break;
- case 's': {
+ case 's':
/* historically, this was comma delimited */
- char *this_sym = strtok(optarg, ",");
- if (!this_sym) /* edge case: -s '' */
- xarraypush_str(find_sym_arr, "");
- while (this_sym) {
- xarraypush_str(find_sym_arr, this_sym);
- this_sym = strtok(NULL, ",");
- }
+ parse_delimited(find_sym_arr, optarg, ",");
break;
- }
case 'N':
xarraypush_str(find_lib_arr, optarg);
break;
next reply other threads:[~2014-03-20 8:06 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-20 8:06 Mike Frysinger (vapier) [this message]
-- strict thread matches above, loose matches on Subject: below --
2015-02-28 22:59 [gentoo-commits] gentoo-projects commit in pax-utils: scanelf.c Mike Frysinger (vapier)
2015-02-24 6:58 Mike Frysinger (vapier)
2015-02-22 2:27 Mike Frysinger (vapier)
2015-02-22 1:38 Mike Frysinger (vapier)
2015-02-22 0:10 Mike Frysinger (vapier)
2015-02-21 19:30 Mike Frysinger (vapier)
2014-11-20 1:25 Mike Frysinger (vapier)
2014-11-05 2:02 Mike Frysinger (vapier)
2014-10-19 7:31 Mike Frysinger (vapier)
2014-03-21 5:33 Mike Frysinger (vapier)
2014-03-21 5:27 Mike Frysinger (vapier)
2014-03-20 8:08 Mike Frysinger (vapier)
2014-01-11 0:28 Mike Frysinger (vapier)
2013-08-14 21:09 Mike Frysinger (vapier)
2013-04-16 16:22 Mike Frysinger (vapier)
2013-04-10 22:27 Mike Frysinger (vapier)
2013-04-08 6:38 Mike Frysinger (vapier)
2013-04-02 21:15 Mike Frysinger (vapier)
2012-11-30 23:25 Mike Frysinger (vapier)
2012-11-10 9:43 Mike Frysinger (vapier)
2012-11-04 8:25 Mike Frysinger (vapier)
2012-11-04 8:23 Mike Frysinger (vapier)
2012-11-04 7:48 Mike Frysinger (vapier)
2012-11-04 6:55 Mike Frysinger (vapier)
2012-08-04 6:08 Mike Frysinger (vapier)
2012-04-29 6:21 Mike Frysinger (vapier)
2012-04-29 5:41 Mike Frysinger (vapier)
2012-01-25 1:58 Mike Frysinger (vapier)
2012-01-23 23:48 Mike Frysinger (vapier)
2012-01-23 22:28 Mike Frysinger (vapier)
2011-12-21 22:17 Mike Frysinger (vapier)
2011-12-21 22:00 Mike Frysinger (vapier)
2011-12-21 17:34 Mike Frysinger (vapier)
2011-12-13 5:12 Mike Frysinger (vapier)
2011-10-13 4:49 Mike Frysinger (vapier)
2011-09-27 22:20 Mike Frysinger (vapier)
2011-09-27 19:56 Mike Frysinger (vapier)
2011-09-27 19:29 Mike Frysinger (vapier)
2011-09-27 19:21 Mike Frysinger (vapier)
2011-09-27 19:20 Mike Frysinger (vapier)
2011-09-27 17:28 Mike Frysinger (vapier)
2011-08-08 1:56 Mike Frysinger (vapier)
2011-07-30 17:08 Ned Ludd (solar)
2010-12-06 20:43 Mike Frysinger (vapier)
2010-01-15 11:56 Mike Frysinger (vapier)
2009-12-20 20:25 Mike Frysinger (vapier)
2009-12-01 10:18 Mike Frysinger (vapier)
2009-03-15 9:13 Mike Frysinger (vapier)
2009-03-15 9:01 Mike Frysinger (vapier)
2009-03-15 8:53 Mike Frysinger (vapier)
2008-12-30 13:38 Mike Frysinger (vapier)
2008-12-30 12:38 Mike Frysinger (vapier)
2008-12-10 20:06 Fabian Groffen (grobian)
2008-12-10 20:05 Fabian Groffen (grobian)
2008-11-17 18:09 Diego Petteno (flameeyes)
2008-11-17 18:03 Diego Petteno (flameeyes)
2008-10-22 17:03 Diego Petteno (flameeyes)
2008-10-22 15:20 Diego Petteno (flameeyes)
2008-09-29 6:05 Mike Frysinger (vapier)
2008-09-29 6:03 Mike Frysinger (vapier)
2008-09-29 6:01 Mike Frysinger (vapier)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140320080601.A80E92004C@flycatcher.gentoo.org \
--to=vapier@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox