@@ -116,44 +116,40 @@ static void ups_update(const char *fn, const char *name, const char *desc)
116
116
/* return 1 if usable, 0 if not */
117
117
static int parse_upsd_conf_args (int numargs , char * * arg )
118
118
{
119
+ unsigned int temp ;
120
+
119
121
/* everything below here uses up through arg[1] */
120
122
if (numargs < 2 )
121
123
return 0 ;
122
124
123
125
/* MAXAGE <seconds> */
124
126
if (!strcmp (arg [0 ], "MAXAGE" )) {
125
- if (isdigit (arg [1 ])) {
126
- maxage = atoi ( arg [ 1 ]) ;
127
+ if (str_to_uint (arg [1 ], & temp , 10 )) {
128
+ maxage = temp ;
127
129
return 1 ;
128
130
}
129
- else {
130
- upslogx (LOG_ERR , "MAXAGE has non numeric value (%s)!" , arg [1 ]);
131
- return 0 ;
132
- }
131
+ upslogx (LOG_ERR , "Could not convert MAXAGE (%s) to an unsigned int (%s)!" , arg [1 ], strerror (errno ));
132
+ return 0 ;
133
133
}
134
134
135
135
/* TRACKINGDELAY <seconds> */
136
136
if (!strcmp (arg [0 ], "TRACKINGDELAY" )) {
137
- if (isdigit (arg [1 ])) {
138
- tracking_delay = atoi ( arg [ 1 ]) ;
137
+ if (str_to_uint (arg [1 ], & temp , 10 )) {
138
+ tracking_delay = temp ;
139
139
return 1 ;
140
140
}
141
- else {
142
- upslogx (LOG_ERR , "TRACKINGDELAY has non numeric value (%s)!" , arg [1 ]);
143
- return 0 ;
144
- }
141
+ upslogx (LOG_ERR , "Could not convert TRACKINGDELAY (%s) to an unsigned int (%s)!" , arg [1 ], strerror (errno ));
142
+ return 0 ;
145
143
}
146
144
147
145
/* MAXCONN <connections> */
148
146
if (!strcmp (arg [0 ], "MAXCONN" )) {
149
- if (isdigit (arg [1 ])) {
150
- maxconn = atoi ( arg [ 1 ]) ;
147
+ if (str_to_uint (arg [1 ], & temp , 10 )) {
148
+ maxconn = temp ;
151
149
return 1 ;
152
150
}
153
- else {
154
- upslogx (LOG_ERR , "MAXCONN has non numeric value (%s)!" , arg [1 ]);
155
- return 0 ;
156
- }
151
+ upslogx (LOG_ERR , "Could not convert MAXCONN (%s) to an unsigned int (%s)!" , arg [1 ], strerror (errno ));
152
+ return 0 ;
157
153
}
158
154
159
155
/* STATEPATH <dir> */
@@ -187,14 +183,12 @@ static int parse_upsd_conf_args(int numargs, char **arg)
187
183
#ifdef WITH_CLIENT_CERTIFICATE_VALIDATION
188
184
/* CERTREQUEST (0 | 1 | 2) */
189
185
if (!strcmp (arg [0 ], "CERTREQUEST" )) {
190
- if (isdigit (arg [1 ])) {
191
- certrequest = atoi ( arg [ 1 ]) ;
186
+ if (str_to_uint (arg [1 ], & temp , 10 )) {
187
+ certrequest = temp ;
192
188
return 1 ;
193
189
}
194
- else {
195
- upslogx (LOG_ERR , "CERTREQUEST has non numeric value (%s)!" , arg [1 ]);
196
- return 0 ;
197
- }
190
+ upslogx (LOG_ERR , "Could not convert CERTREQUEST (%s) to an unsigned int (%s)!" , arg [1 ], strerror (errno ));
191
+ return 0 ;
198
192
}
199
193
#endif /* WITH_CLIENT_CERTIFICATE_VALIDATION */
200
194
#endif /* WITH_OPENSSL | WITH_NSS */
0 commit comments