[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/6] procfs: keep old config values if the parsing fails
From: |
Justus Winter |
Subject: |
[PATCH 2/6] procfs: keep old config values if the parsing fails |
Date: |
Fri, 28 Jun 2013 18:37:41 +0200 |
Previously if strtol failed the previous configuration value would get
overwritten. Prevent this by storing the result in a temporary
variable and update the configuration if the argument was parsed
correctly and passed the sanity checks.
* procfs/main.c (argp_parser): Keep old configuration in case a
malformed value is encountered.
---
procfs/main.c | 27 +++++++++++++++++++--------
1 file changed, 19 insertions(+), 8 deletions(-)
diff --git a/procfs/main.c b/procfs/main.c
index f33ace9..0892d36 100644
--- a/procfs/main.c
+++ b/procfs/main.c
@@ -42,36 +42,45 @@ argp_parser (int key, char *arg, struct argp_state *state)
{
struct passwd *pw;
char *endp;
+ long int v;
switch (key)
{
case 'h':
- opt_clk_tck = strtol (arg, &endp, 0);
- if (*endp || ! *arg || opt_clk_tck <= 0)
+ v = strtol (arg, &endp, 0);
+ if (*endp || ! *arg || v <= 0)
argp_error (state, "--clk-tck: HZ should be a positive integer");
+ else
+ opt_clk_tck = v;
break;
case 's':
- opt_stat_mode = strtol (arg, &endp, 8);
- if (*endp || ! *arg || opt_stat_mode & ~07777)
+ v = strtol (arg, &endp, 8);
+ if (*endp || ! *arg || (mode_t) v & ~07777)
argp_error (state, "--stat-mode: MODE should be an octal mode");
+ else
+ opt_stat_mode = v;
break;
case 'S':
if (arg)
{
- opt_fake_self = strtol (arg, &endp, 0);
+ v = strtol (arg, &endp, 0);
if (*endp || ! *arg)
argp_error (state, "--fake-self: PID must be an integer");
+ else
+ opt_fake_self = v;
}
else
opt_fake_self = 1;
break;
case 'k':
- opt_kernel_pid = strtol (arg, &endp, 0);
+ v = strtol (arg, &endp, 0);
if (*endp || ! *arg || (signed) opt_kernel_pid < 0)
argp_error (state, "--kernel-process: PID must be a positive integer");
+ else
+ opt_kernel_pid = v;
break;
case 'c':
@@ -88,10 +97,12 @@ argp_parser (int key, char *arg, struct argp_state *state)
break;
}
- opt_anon_owner = strtol (arg, &endp, 0);
- if (*endp || ! *arg || (signed) opt_anon_owner < 0)
+ v = strtol (arg, &endp, 0);
+ if (*endp || ! *arg || v < 0)
argp_error (state, "--anonymous-owner: USER should be "
"a user name or a numeric UID.");
+ else
+ opt_anon_owner = v;
break;
}
--
1.7.10.4
- some work on procfs, Justus Winter, 2013/06/27
- [PATCH 1/6] procfs: fix the error handling in argp_parser, Justus Winter, 2013/06/27
- Re: [PATCH 1/6] procfs: fix the error handling in argp_parser, Emilio Pozuelo Monfort, 2013/06/27
- [PATCH 1/6] procfs: fix the error handling in argp_parser, Justus Winter, 2013/06/28
- [PATCH 3/6] procfs: enable fsys_set_options, Justus Winter, 2013/06/28
- [PATCH 2/6] procfs: keep old config values if the parsing fails,
Justus Winter <=
- [PATCH 5/6] procfs: define macros for the default argument values, Justus Winter, 2013/06/28
- [PATCH 4/6] procfs: handle the --update parameter, Justus Winter, 2013/06/28
- [PATCH 6/6] procfs: provide a more meaningful response to fsys_get_options, Justus Winter, 2013/06/28
- Re: [PATCH 1/6] procfs: fix the error handling in argp_parser, Samuel Thibault, 2013/06/29
- Re: [PATCH 1/6] procfs: fix the error handling in argp_parser, Justus Winter, 2013/06/29
- Re: [PATCH 1/6] procfs: fix the error handling in argp_parser, Samuel Thibault, 2013/06/30
[PATCH 2/6] procfs: keep old config values if the parsing fails, Justus Winter, 2013/06/27
[PATCH 3/6] procfs: enable fsys_set_options, Justus Winter, 2013/06/27
[PATCH 5/6] procfs: define macros for the default argument values, Justus Winter, 2013/06/27
[PATCH 6/6] procfs: provide a more meaningful response to fsys_get_options, Justus Winter, 2013/06/27