2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-08-28 21:07:55 +00:00

Suppress PVS Studio false positives.

This commit is contained in:
Todd C. Miller 2021-01-06 14:27:09 -07:00
parent 108e29446d
commit 4e11bc0e26
22 changed files with 473 additions and 517 deletions

View File

@ -348,7 +348,7 @@ exec_mailer(int pipein)
/* Set stdin to read side of the pipe. */ /* Set stdin to read side of the pipe. */
if (dup3(pipein, STDIN_FILENO, 0) == -1) { if (dup3(pipein, STDIN_FILENO, 0) == -1) {
syslog(LOG_ERR, _("unable to dup stdin: %m")); syslog(LOG_ERR, _("unable to dup stdin: %m")); // -V618
sudo_debug_printf(SUDO_DEBUG_ERROR, sudo_debug_printf(SUDO_DEBUG_ERROR,
"unable to dup stdin: %s", strerror(errno)); "unable to dup stdin: %s", strerror(errno));
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
@ -357,7 +357,7 @@ exec_mailer(int pipein)
/* Build up an argv based on the mailer path and flags */ /* Build up an argv based on the mailer path and flags */
if ((mflags = strdup(evl_conf.mailerflags)) == NULL) { if ((mflags = strdup(evl_conf.mailerflags)) == NULL) {
syslog(LOG_ERR, _("unable to allocate memory")); syslog(LOG_ERR, _("unable to allocate memory")); // -V618
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
_exit(127); _exit(127);
} }
@ -393,7 +393,7 @@ exec_mailer(int pipein)
execve(mpath, argv, root_envp); execve(mpath, argv, root_envp);
else else
execv(mpath, argv); execv(mpath, argv);
syslog(LOG_ERR, _("unable to execute %s: %m"), mpath); syslog(LOG_ERR, _("unable to execute %s: %m"), mpath); // -V618
sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to execute %s: %s", sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to execute %s: %s",
mpath, strerror(errno)); mpath, strerror(errno));
_exit(127); _exit(127);
@ -441,7 +441,7 @@ send_mail(const struct eventlog *evlog, const char *fmt, ...)
switch (fork()) { switch (fork()) {
case -1: case -1:
/* Error. */ /* Error. */
syslog(LOG_ERR, _("unable to fork: %m")); syslog(LOG_ERR, _("unable to fork: %m")); // -V618
sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to fork: %s", sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to fork: %s",
strerror(errno)); strerror(errno));
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
@ -485,7 +485,7 @@ send_mail(const struct eventlog *evlog, const char *fmt, ...)
closefrom_nodebug(STDERR_FILENO + 1); closefrom_nodebug(STDERR_FILENO + 1);
if (pipe2(pfd, O_CLOEXEC) == -1) { if (pipe2(pfd, O_CLOEXEC) == -1) {
syslog(LOG_ERR, _("unable to open pipe: %m")); syslog(LOG_ERR, _("unable to open pipe: %m")); // -V618
sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to open pipe: %s", sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to open pipe: %s",
strerror(errno)); strerror(errno));
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
@ -495,7 +495,7 @@ send_mail(const struct eventlog *evlog, const char *fmt, ...)
switch (pid = sudo_debug_fork()) { switch (pid = sudo_debug_fork()) {
case -1: case -1:
/* Error. */ /* Error. */
syslog(LOG_ERR, _("unable to fork: %m")); syslog(LOG_ERR, _("unable to fork: %m")); // -V618
sudo_debug_printf( sudo_debug_printf(
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
"unable to fork"); "unable to fork");

View File

@ -142,7 +142,7 @@ _rs_rekey(unsigned char *dat, size_t datlen)
} }
/* immediately reinit for backtracking resistance */ /* immediately reinit for backtracking resistance */
_rs_init(rs_buf, KEYSZ + IVSZ); _rs_init(rs_buf, KEYSZ + IVSZ);
memset(rs_buf, 0, KEYSZ + IVSZ); memset(rs_buf, 0, KEYSZ + IVSZ); // -V512
rs_have = sizeof(rs_buf) - KEYSZ - IVSZ; rs_have = sizeof(rs_buf) - KEYSZ - IVSZ;
} }

View File

@ -239,6 +239,7 @@ sudo_debug_new_output(struct sudo_debug_instance *instance,
return output; return output;
oom: oom:
// -V:sudo_warn_nodebug:575, 618
sudo_warn_nodebug(NULL); sudo_warn_nodebug(NULL);
bad: bad:
if (output != NULL) if (output != NULL)

View File

@ -456,7 +456,7 @@ audit_write_exit_record(int exit_status, int error)
goto oom; goto oom;
} else { } else {
json_value.type = JSON_STRING; json_value.type = JSON_STRING;
json_value.u.string = signame; json_value.u.string = signame; // -V507
if (!sudo_json_add_value(&json, "signal", &json_value)) if (!sudo_json_add_value(&json, "signal", &json_value))
goto oom; goto oom;
} }

View File

@ -50,11 +50,11 @@ _sudo_ConvMessage__Init(PyObject *py_self, PyObject *py_args, PyObject *py_kwarg
goto cleanup; goto cleanup;
py_object_set_attr_number(py_self, "timeout", conv_message.timeout); py_object_set_attr_number(py_self, "timeout", conv_message.timeout);
if (PyErr_Occurred()) if (PyErr_Occurred()) // -V547
goto cleanup; goto cleanup;
py_object_set_attr_string(py_self, "msg", conv_message.msg); py_object_set_attr_string(py_self, "msg", conv_message.msg);
if (PyErr_Occurred()) if (PyErr_Occurred()) // -V547
goto cleanup; goto cleanup;
cleanup: cleanup:
@ -113,11 +113,11 @@ sudo_module_ConvMessage_to_c(PyObject *py_conv_message, struct sudo_conv_message
debug_return_int(SUDO_RC_ERROR); debug_return_int(SUDO_RC_ERROR);
conv_message->timeout = (int)py_object_get_optional_attr_number(py_conv_message, "timeout"); conv_message->timeout = (int)py_object_get_optional_attr_number(py_conv_message, "timeout");
if (PyErr_Occurred()) if (PyErr_Occurred()) // -V547
debug_return_int(SUDO_RC_ERROR); debug_return_int(SUDO_RC_ERROR);
conv_message->msg = py_object_get_optional_attr_string(py_conv_message, "msg"); conv_message->msg = py_object_get_optional_attr_string(py_conv_message, "msg");
if (PyErr_Occurred()) if (PyErr_Occurred()) // -V547
debug_return_int(SUDO_RC_ERROR); debug_return_int(SUDO_RC_ERROR);
debug_return_int(SUDO_RC_OK); debug_return_int(SUDO_RC_OK);

View File

@ -252,7 +252,7 @@ sudo_pam_init2(struct passwd *pw, sudo_auth *auth, bool quiet)
if (ttypath == NULL) if (ttypath == NULL)
ttypath = ""; ttypath = "";
#endif #endif
if (ttypath != NULL) { if (ttypath != NULL) { // -V547
rc = pam_set_item(pamh, PAM_TTY, ttypath); rc = pam_set_item(pamh, PAM_TTY, ttypath);
if (rc != PAM_SUCCESS) { if (rc != PAM_SUCCESS) {
errstr = sudo_pam_strerror(pamh, rc); errstr = sudo_pam_strerror(pamh, rc);

View File

@ -29,6 +29,9 @@
/* SUPPRESS 287 on yaccpar_sccsid *//* Unused static variable */ /* SUPPRESS 287 on yaccpar_sccsid *//* Unused static variable */
/* SUPPRESS 288 on yyerrlab *//* Label unused */ /* SUPPRESS 288 on yyerrlab *//* Label unused */
/* PVS Studio suppression*/
/* -V::1037, 1042*/
#include <config.h> #include <config.h>
#include <stdio.h> #include <stdio.h>
@ -106,7 +109,7 @@ static int yyerror(const char *s);
static int yylex(void); static int yylex(void);
int yyparse(void); int yyparse(void);
#line 94 "getdate.y" #line 97 "getdate.y"
#ifndef YYSTYPE_DEFINED #ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED #define YYSTYPE_DEFINED
typedef union { typedef union {
@ -114,7 +117,7 @@ typedef union {
enum _MERIDIAN Meridian; enum _MERIDIAN Meridian;
} YYSTYPE; } YYSTYPE;
#endif /* YYSTYPE_DEFINED */ #endif /* YYSTYPE_DEFINED */
#line 112 "getdate.c" #line 115 "getdate.c"
#define tAGO 257 #define tAGO 257
#define tDAY 258 #define tDAY 258
#define tDAYZONE 259 #define tDAYZONE 259
@ -129,11 +132,7 @@ typedef union {
#define tZONE 268 #define tZONE 268
#define tDST 269 #define tDST 269
#define YYERRCODE 256 #define YYERRCODE 256
#if defined(__cplusplus) || defined(__STDC__)
const short yylhs[] = const short yylhs[] =
#else
short yylhs[] =
#endif
{ -1, { -1,
0, 0, 2, 2, 2, 2, 2, 2, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 3, 3,
3, 3, 3, 4, 4, 4, 6, 6, 6, 5, 3, 3, 3, 4, 4, 4, 6, 6, 6, 5,
@ -141,11 +140,7 @@ short yylhs[] =
9, 9, 9, 9, 9, 9, 9, 9, 8, 1, 9, 9, 9, 9, 9, 9, 9, 9, 8, 1,
1, 1,
}; };
#if defined(__cplusplus) || defined(__STDC__)
const short yylen[] = const short yylen[] =
#else
short yylen[] =
#endif
{ 2, { 2,
0, 2, 1, 1, 1, 1, 1, 1, 2, 4, 0, 2, 1, 1, 1, 1, 1, 1, 2, 4,
4, 6, 6, 1, 1, 2, 1, 2, 2, 3, 4, 6, 6, 1, 1, 2, 1, 2, 2, 3,
@ -153,11 +148,7 @@ short yylen[] =
2, 1, 2, 2, 1, 2, 2, 1, 1, 0, 2, 1, 2, 2, 1, 2, 2, 1, 1, 0,
1, 1,
}; };
#if defined(__cplusplus) || defined(__STDC__)
const short yydefred[] = const short yydefred[] =
#else
short yydefred[] =
#endif
{ 1, { 1,
0, 0, 15, 32, 0, 38, 35, 0, 0, 0, 0, 0, 15, 32, 0, 38, 35, 0, 0, 0,
2, 3, 4, 5, 6, 7, 8, 0, 18, 0, 2, 3, 4, 5, 6, 7, 8, 0, 18, 0,
@ -165,50 +156,30 @@ short yydefred[] =
0, 0, 16, 28, 0, 23, 27, 22, 0, 0, 0, 0, 16, 28, 0, 23, 27, 22, 0, 0,
25, 41, 11, 0, 10, 0, 0, 21, 13, 12, 25, 41, 11, 0, 10, 0, 0, 21, 13, 12,
}; };
#if defined(__cplusplus) || defined(__STDC__)
const short yydgoto[] = const short yydgoto[] =
#else
short yydgoto[] =
#endif
{ 1, { 1,
45, 11, 12, 13, 14, 15, 16, 17, 18, 45, 11, 12, 13, 14, 15, 16, 17, 18,
}; };
#if defined(__cplusplus) || defined(__STDC__)
const short yysindex[] = const short yysindex[] =
#else
short yysindex[] =
#endif
{ 0, { 0,
-249, -38, 0, 0, -260, 0, 0, -240, -47, -248, -249, -38, 0, 0, -260, 0, 0, -240, -47, -248,
0, 0, 0, 0, 0, 0, 0, -237, 0, -18, 0, 0, 0, 0, 0, 0, 0, -237, 0, -18,
0, 0, 0, 0, 0, 0, -262, 0, 0, -239, 0, 0, 0, 0, 0, 0, -262, 0, 0, -239,
-238, -236, 0, 0, -235, 0, 0, 0, -56, -19, -238, -236, 0, 0, -235, 0, 0, 0, -56, -19,
0, 0, 0, -234, 0, -232, -258, 0, 0, 0,}; 0, 0, 0, -234, 0, -232, -258, 0, 0, 0,};
#if defined(__cplusplus) || defined(__STDC__)
const short yyrindex[] = const short yyrindex[] =
#else
short yyrindex[] =
#endif
{ 0, { 0,
0, 1, 0, 0, 0, 0, 0, 0, 69, 12, 0, 1, 0, 0, 0, 0, 0, 0, 69, 12,
0, 0, 0, 0, 0, 0, 0, 23, 0, 34, 0, 0, 0, 0, 0, 0, 0, 23, 0, 34,
0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 56, 45, 0, 0, 0, 0, 0, 0, 0, 0, 56, 45,
0, 0, 0, 0, 0, 0, 56, 0, 0, 0,}; 0, 0, 0, 0, 0, 0, 56, 0, 0, 0,};
#if defined(__cplusplus) || defined(__STDC__)
const short yygindex[] = const short yygindex[] =
#else
short yygindex[] =
#endif
{ 0, { 0,
-17, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0,
}; };
#define YYTABLESIZE 337 #define YYTABLESIZE 337
#if defined(__cplusplus) || defined(__STDC__)
const short yytable[] = const short yytable[] =
#else
short yytable[] =
#endif
{ 32, { 32,
17, 44, 42, 36, 37, 19, 20, 49, 2, 3, 17, 44, 42, 36, 37, 19, 20, 49, 2, 3,
31, 14, 4, 5, 6, 7, 8, 9, 10, 34, 31, 14, 4, 5, 6, 7, 8, 9, 10, 34,
@ -245,11 +216,7 @@ short yytable[] =
40, 0, 40, 40, 26, 26, 0, 39, 26, 26, 40, 0, 40, 40, 26, 26, 0, 39, 26, 26,
26, 26, 0, 0, 26, 39, 39, 26, 26, 0, 0, 26, 39, 39,
}; };
#if defined(__cplusplus) || defined(__STDC__)
const short yycheck[] = const short yycheck[] =
#else
short yycheck[] =
#endif
{ 47, { 47,
0, 58, 261, 266, 267, 44, 267, 266, 258, 259, 0, 58, 261, 266, 267, 44, 267, 266, 258, 259,
58, 0, 262, 263, 264, 265, 266, 267, 268, 257, 58, 0, 262, 263, 264, 265, 266, 267, 268, 257,
@ -292,11 +259,7 @@ short yycheck[] =
#endif #endif
#define YYMAXTOKEN 269 #define YYMAXTOKEN 269
#if YYDEBUG #if YYDEBUG
#if defined(__cplusplus) || defined(__STDC__)
const char * const yyname[] = const char * const yyname[] =
#else
char *yyname[] =
#endif
{ {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"','",0,0,"'/'",0,0,0,0,0,0,0,0,0,0,"':'",0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,"','",0,0,"'/'",0,0,0,0,0,0,0,0,0,0,"':'",0,0,0,0,0,0,0,0,0,
@ -308,11 +271,7 @@ char *yyname[] =
"tDAYZONE","tID","tMERIDIAN","tMINUTE_UNIT","tMONTH","tMONTH_UNIT","tSEC_UNIT", "tDAYZONE","tID","tMERIDIAN","tMINUTE_UNIT","tMONTH","tMONTH_UNIT","tSEC_UNIT",
"tSNUMBER","tUNUMBER","tZONE","tDST", "tSNUMBER","tUNUMBER","tZONE","tDST",
}; };
#if defined(__cplusplus) || defined(__STDC__)
const char * const yyrule[] = const char * const yyrule[] =
#else
char *yyrule[] =
#endif
{"$accept : spec", {"$accept : spec",
"spec :", "spec :",
"spec : spec item", "spec : spec item",
@ -383,7 +342,7 @@ short *yysslim;
YYSTYPE *yyvs; YYSTYPE *yyvs;
unsigned int yystacksize; unsigned int yystacksize;
int yyparse(void); int yyparse(void);
#line 313 "getdate.y" #line 316 "getdate.y"
/* Month and day table. */ /* Month and day table. */
static TABLE const MonthDayTable[] = { static TABLE const MonthDayTable[] = {
@ -1005,13 +964,9 @@ main(int argc, char *argv[])
/* NOTREACHED */ /* NOTREACHED */
} }
#endif /* TEST */ #endif /* TEST */
#line 951 "getdate.c" #line 954 "getdate.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */
#if defined(__cplusplus) || defined(__STDC__)
static int yygrowstack(void) static int yygrowstack(void)
#else
static int yygrowstack()
#endif
{ {
unsigned int newsize; unsigned int newsize;
long sslen; long sslen;
@ -1027,23 +982,19 @@ static int yygrowstack()
#ifdef SIZE_MAX #ifdef SIZE_MAX
#define YY_SIZE_MAX SIZE_MAX #define YY_SIZE_MAX SIZE_MAX
#else #else
#ifdef __STDC__
#define YY_SIZE_MAX 0xffffffffU #define YY_SIZE_MAX 0xffffffffU
#else
#define YY_SIZE_MAX (unsigned int)0xffffffff
#endif
#endif #endif
if (YY_SIZE_MAX / newsize < sizeof *newss) if (YY_SIZE_MAX / newsize < sizeof *newss)
goto bail; goto bail;
sslen = yyssp - yyss; sslen = yyssp - yyss;
newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) : newss = yyss ? realloc(yyss, newsize * sizeof *newss) :
(short *)malloc(newsize * sizeof *newss); /* overflow check above */ malloc(newsize * sizeof *newss); /* overflow check above */
if (newss == NULL) if (newss == NULL)
goto bail; goto bail;
yyss = newss; yyss = newss;
yyssp = newss + sslen; yyssp = newss + sslen;
newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) : newvs = yyvs ? realloc(yyvs, newsize * sizeof *newvs) :
(YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check above */ malloc(newsize * sizeof *newvs); /* overflow check above */
if (newvs == NULL) if (newvs == NULL)
goto bail; goto bail;
yyvs = newvs; yyvs = newvs;
@ -1052,10 +1003,8 @@ static int yygrowstack()
yysslim = yyss + newsize - 1; yysslim = yyss + newsize - 1;
return 0; return 0;
bail: bail:
if (yyss) free(yyss);
free(yyss); free(yyvs);
if (yyvs)
free(yyvs);
yyss = yyssp = NULL; yyss = yyssp = NULL;
yyvs = yyvsp = NULL; yyvs = yyvsp = NULL;
yystacksize = 0; yystacksize = 0;
@ -1067,19 +1016,11 @@ bail:
#define YYACCEPT goto yyaccept #define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab #define YYERROR goto yyerrlab
int int
#if defined(__cplusplus) || defined(__STDC__)
yyparse(void) yyparse(void)
#else
yyparse()
#endif
{ {
int yym, yyn, yystate; int yym, yyn, yystate;
#if YYDEBUG #if YYDEBUG
#if defined(__cplusplus) || defined(__STDC__)
const char *yys; const char *yys;
#else /* !(defined(__cplusplus) || defined(__STDC__)) */
char *yys;
#endif /* !(defined(__cplusplus) || defined(__STDC__)) */
if ((yys = getenv("YYDEBUG"))) if ((yys = getenv("YYDEBUG")))
{ {
@ -1214,37 +1155,37 @@ yyreduce:
switch (yyn) switch (yyn)
{ {
case 3: case 3:
#line 112 "getdate.y" #line 115 "getdate.y"
{ {
yyHaveTime++; yyHaveTime++;
} }
break; break;
case 4: case 4:
#line 115 "getdate.y" #line 118 "getdate.y"
{ {
yyHaveZone++; yyHaveZone++;
} }
break; break;
case 5: case 5:
#line 118 "getdate.y" #line 121 "getdate.y"
{ {
yyHaveDate++; yyHaveDate++;
} }
break; break;
case 6: case 6:
#line 121 "getdate.y" #line 124 "getdate.y"
{ {
yyHaveDay++; yyHaveDay++;
} }
break; break;
case 7: case 7:
#line 124 "getdate.y" #line 127 "getdate.y"
{ {
yyHaveRel++; yyHaveRel++;
} }
break; break;
case 9: case 9:
#line 130 "getdate.y" #line 133 "getdate.y"
{ {
yyHour = yyvsp[-1].Number; yyHour = yyvsp[-1].Number;
yyMinutes = 0; yyMinutes = 0;
@ -1253,7 +1194,7 @@ case 9:
} }
break; break;
case 10: case 10:
#line 136 "getdate.y" #line 139 "getdate.y"
{ {
yyHour = yyvsp[-3].Number; yyHour = yyvsp[-3].Number;
yyMinutes = yyvsp[-1].Number; yyMinutes = yyvsp[-1].Number;
@ -1262,7 +1203,7 @@ case 10:
} }
break; break;
case 11: case 11:
#line 142 "getdate.y" #line 145 "getdate.y"
{ {
yyHour = yyvsp[-3].Number; yyHour = yyvsp[-3].Number;
yyMinutes = yyvsp[-1].Number; yyMinutes = yyvsp[-1].Number;
@ -1272,7 +1213,7 @@ case 11:
} }
break; break;
case 12: case 12:
#line 149 "getdate.y" #line 152 "getdate.y"
{ {
yyHour = yyvsp[-5].Number; yyHour = yyvsp[-5].Number;
yyMinutes = yyvsp[-3].Number; yyMinutes = yyvsp[-3].Number;
@ -1281,7 +1222,7 @@ case 12:
} }
break; break;
case 13: case 13:
#line 155 "getdate.y" #line 158 "getdate.y"
{ {
yyHour = yyvsp[-5].Number; yyHour = yyvsp[-5].Number;
yyMinutes = yyvsp[-3].Number; yyMinutes = yyvsp[-3].Number;
@ -1292,56 +1233,56 @@ case 13:
} }
break; break;
case 14: case 14:
#line 165 "getdate.y" #line 168 "getdate.y"
{ {
yyTimezone = yyvsp[0].Number; yyTimezone = yyvsp[0].Number;
yyDSTmode = DSToff; yyDSTmode = DSToff;
} }
break; break;
case 15: case 15:
#line 169 "getdate.y" #line 172 "getdate.y"
{ {
yyTimezone = yyvsp[0].Number; yyTimezone = yyvsp[0].Number;
yyDSTmode = DSTon; yyDSTmode = DSTon;
} }
break; break;
case 16: case 16:
#line 174 "getdate.y" #line 177 "getdate.y"
{ {
yyTimezone = yyvsp[-1].Number; yyTimezone = yyvsp[-1].Number;
yyDSTmode = DSTon; yyDSTmode = DSTon;
} }
break; break;
case 17: case 17:
#line 180 "getdate.y" #line 183 "getdate.y"
{ {
yyDayOrdinal = 1; yyDayOrdinal = 1;
yyDayNumber = yyvsp[0].Number; yyDayNumber = yyvsp[0].Number;
} }
break; break;
case 18: case 18:
#line 184 "getdate.y" #line 187 "getdate.y"
{ {
yyDayOrdinal = 1; yyDayOrdinal = 1;
yyDayNumber = yyvsp[-1].Number; yyDayNumber = yyvsp[-1].Number;
} }
break; break;
case 19: case 19:
#line 188 "getdate.y" #line 191 "getdate.y"
{ {
yyDayOrdinal = yyvsp[-1].Number; yyDayOrdinal = yyvsp[-1].Number;
yyDayNumber = yyvsp[0].Number; yyDayNumber = yyvsp[0].Number;
} }
break; break;
case 20: case 20:
#line 194 "getdate.y" #line 197 "getdate.y"
{ {
yyMonth = yyvsp[-2].Number; yyMonth = yyvsp[-2].Number;
yyDay = yyvsp[0].Number; yyDay = yyvsp[0].Number;
} }
break; break;
case 21: case 21:
#line 198 "getdate.y" #line 201 "getdate.y"
{ {
if (yyvsp[-4].Number >= 100) { if (yyvsp[-4].Number >= 100) {
yyYear = yyvsp[-4].Number; yyYear = yyvsp[-4].Number;
@ -1355,7 +1296,7 @@ case 21:
} }
break; break;
case 22: case 22:
#line 209 "getdate.y" #line 212 "getdate.y"
{ {
/* ISO 8601 format. yyyy-mm-dd. */ /* ISO 8601 format. yyyy-mm-dd. */
yyYear = yyvsp[-2].Number; yyYear = yyvsp[-2].Number;
@ -1364,7 +1305,7 @@ case 22:
} }
break; break;
case 23: case 23:
#line 215 "getdate.y" #line 218 "getdate.y"
{ {
/* e.g. 17-JUN-1992. */ /* e.g. 17-JUN-1992. */
yyDay = yyvsp[-2].Number; yyDay = yyvsp[-2].Number;
@ -1373,14 +1314,14 @@ case 23:
} }
break; break;
case 24: case 24:
#line 221 "getdate.y" #line 224 "getdate.y"
{ {
yyMonth = yyvsp[-1].Number; yyMonth = yyvsp[-1].Number;
yyDay = yyvsp[0].Number; yyDay = yyvsp[0].Number;
} }
break; break;
case 25: case 25:
#line 225 "getdate.y" #line 228 "getdate.y"
{ {
yyMonth = yyvsp[-3].Number; yyMonth = yyvsp[-3].Number;
yyDay = yyvsp[-2].Number; yyDay = yyvsp[-2].Number;
@ -1388,14 +1329,14 @@ case 25:
} }
break; break;
case 26: case 26:
#line 230 "getdate.y" #line 233 "getdate.y"
{ {
yyMonth = yyvsp[0].Number; yyMonth = yyvsp[0].Number;
yyDay = yyvsp[-1].Number; yyDay = yyvsp[-1].Number;
} }
break; break;
case 27: case 27:
#line 234 "getdate.y" #line 237 "getdate.y"
{ {
yyMonth = yyvsp[-1].Number; yyMonth = yyvsp[-1].Number;
yyDay = yyvsp[-2].Number; yyDay = yyvsp[-2].Number;
@ -1403,68 +1344,68 @@ case 27:
} }
break; break;
case 28: case 28:
#line 241 "getdate.y" #line 244 "getdate.y"
{ {
yyRelSeconds = -yyRelSeconds; yyRelSeconds = -yyRelSeconds;
yyRelMonth = -yyRelMonth; yyRelMonth = -yyRelMonth;
} }
break; break;
case 30: case 30:
#line 248 "getdate.y"
{
yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L;
}
break;
case 31:
#line 251 "getdate.y" #line 251 "getdate.y"
{ {
yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L; yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L;
} }
break; break;
case 32: case 31:
#line 254 "getdate.y" #line 254 "getdate.y"
{
yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L;
}
break;
case 32:
#line 257 "getdate.y"
{ {
yyRelSeconds += yyvsp[0].Number * 60L; yyRelSeconds += yyvsp[0].Number * 60L;
} }
break; break;
case 33: case 33:
#line 257 "getdate.y"
{
yyRelSeconds += yyvsp[-1].Number;
}
break;
case 34:
#line 260 "getdate.y" #line 260 "getdate.y"
{ {
yyRelSeconds += yyvsp[-1].Number; yyRelSeconds += yyvsp[-1].Number;
} }
break; break;
case 35: case 34:
#line 263 "getdate.y" #line 263 "getdate.y"
{
yyRelSeconds += yyvsp[-1].Number;
}
break;
case 35:
#line 266 "getdate.y"
{ {
yyRelSeconds++; yyRelSeconds++;
} }
break; break;
case 36: case 36:
#line 266 "getdate.y"
{
yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;
}
break;
case 37:
#line 269 "getdate.y" #line 269 "getdate.y"
{ {
yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number; yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;
} }
break; break;
case 38: case 37:
#line 272 "getdate.y" #line 272 "getdate.y"
{
yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;
}
break;
case 38:
#line 275 "getdate.y"
{ {
yyRelMonth += yyvsp[0].Number; yyRelMonth += yyvsp[0].Number;
} }
break; break;
case 39: case 39:
#line 277 "getdate.y" #line 280 "getdate.y"
{ {
if (yyHaveTime && yyHaveDate && !yyHaveRel) if (yyHaveTime && yyHaveDate && !yyHaveRel)
yyYear = yyvsp[0].Number; yyYear = yyvsp[0].Number;
@ -1492,18 +1433,18 @@ case 39:
} }
break; break;
case 40: case 40:
#line 304 "getdate.y" #line 307 "getdate.y"
{ {
yyval.Meridian = MER24; yyval.Meridian = MER24;
} }
break; break;
case 41: case 41:
#line 307 "getdate.y" #line 310 "getdate.y"
{ {
yyval.Meridian = yyvsp[0].Meridian; yyval.Meridian = yyvsp[0].Meridian;
} }
break; break;
#line 1449 "getdate.c" #line 1434 "getdate.c"
} }
yyssp -= yym; yyssp -= yym;
yystate = *yyssp; yystate = *yyssp;
@ -1556,19 +1497,15 @@ to state %d\n", YYPREFIX, *yyssp, yystate);
yyoverflow: yyoverflow:
yyerror("yacc stack overflow"); yyerror("yacc stack overflow");
yyabort: yyabort:
if (yyss) free(yyss);
free(yyss); free(yyvs);
if (yyvs)
free(yyvs);
yyss = yyssp = NULL; yyss = yyssp = NULL;
yyvs = yyvsp = NULL; yyvs = yyvsp = NULL;
yystacksize = 0; yystacksize = 0;
return (1); return (1);
yyaccept: yyaccept:
if (yyss) free(yyss);
free(yyss); free(yyvs);
if (yyvs)
free(yyvs);
yyss = yyssp = NULL; yyss = yyssp = NULL;
yyvs = yyvsp = NULL; yyvs = yyvsp = NULL;
yystacksize = 0; yystacksize = 0;

View File

@ -12,6 +12,9 @@
/* SUPPRESS 287 on yaccpar_sccsid *//* Unused static variable */ /* SUPPRESS 287 on yaccpar_sccsid *//* Unused static variable */
/* SUPPRESS 288 on yyerrlab *//* Label unused */ /* SUPPRESS 288 on yyerrlab *//* Label unused */
// PVS Studio suppression
// -V::1037, 1042
#include <config.h> #include <config.h>
#include <stdio.h> #include <stdio.h>

View File

@ -55,7 +55,7 @@ sudo_goodpath(const char *path, const char *runchroot, struct stat *sbp)
errno = ENAMETOOLONG; errno = ENAMETOOLONG;
goto done; goto done;
} }
path = pathbuf; path = pathbuf; // -V507
} }
if (sbp == NULL) if (sbp == NULL)
sbp = &sb; sbp = &sb;

File diff suppressed because it is too large Load Diff

View File

@ -167,7 +167,7 @@ extern int sudoersdebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE union YYSTYPE
{ {
#line 80 "gram.y" #line 83 "gram.y"
struct cmndspec *cmndspec; struct cmndspec *cmndspec;
struct defaults *defaults; struct defaults *defaults;

View File

@ -45,6 +45,9 @@
/* If we last saw a newline the entry is on the preceding line. */ /* If we last saw a newline the entry is on the preceding line. */
#define this_lineno (sudoerschar == '\n' ? sudolineno - 1 : sudolineno) #define this_lineno (sudoerschar == '\n' ? sudolineno - 1 : sudolineno)
// PVS Studio suppression
// -V::1037, 1042
/* /*
* Globals * Globals
*/ */
@ -1104,6 +1107,7 @@ sudoerserrorf(const char *fmt, ...)
void void
sudoerserror(const char *s) sudoerserror(const char *s)
{ {
// -V:sudoerserror:575, 618
if (s == NULL) if (s == NULL)
sudoerserrorf(NULL); sudoerserrorf(NULL);
else else

View File

@ -66,7 +66,7 @@ rcstr_alloc(size_t len)
rcs->refcnt = 1; rcs->refcnt = 1;
rcs->str[0] = '\0'; rcs->str[0] = '\0';
/* cppcheck-suppress memleak */ /* cppcheck-suppress memleak */
debug_return_ptr(rcs->str); debug_return_ptr(rcs->str); // -V773
} }
char * char *

View File

@ -109,7 +109,7 @@ rbcreate(int (*compar)(const void *, const void*))
* Similarly, the fake root node keeps us from having to worry * Similarly, the fake root node keeps us from having to worry
* about splitting the root. * about splitting the root.
*/ */
tree->root.left = tree->root.right = tree->root.parent = &tree->nil; tree->root.left = tree->root.right = tree->root.parent = &tree->nil; // -V778
tree->root.color = black; tree->root.color = black;
tree->root.data = NULL; tree->root.data = NULL;

View File

@ -2759,6 +2759,9 @@ char *sudoerstext;
# define NAMLEN(dirent) strlen((dirent)->d_name) # define NAMLEN(dirent) strlen((dirent)->d_name)
#endif #endif
// PVS Studio suppression
// -V::519, 1004, 1037
int sudolineno; /* current sudoers line number. */ int sudolineno; /* current sudoers line number. */
char *sudoers; /* sudoers file being parsed. */ char *sudoers; /* sudoers file being parsed. */
struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */ struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */
@ -2801,7 +2804,7 @@ int (*trace_print)(const char *msg) = sudoers_trace_print;
#line 2799 "toke.c" #line 2802 "toke.c"
#define INITIAL 0 #define INITIAL 0
#define GOTDEFS 1 #define GOTDEFS 1
@ -3021,9 +3024,9 @@ YY_DECL
} }
{ {
#line 114 "toke.l" #line 117 "toke.l"
#line 3021 "toke.c" #line 3024 "toke.c"
while ( 1 ) /* loops until end-of-file is reached */ while ( 1 ) /* loops until end-of-file is reached */
{ {
@ -3083,7 +3086,7 @@ do_action: /* This label is used only to access EOF actions. */
case 1: case 1:
YY_RULE_SETUP YY_RULE_SETUP
#line 115 "toke.l" #line 118 "toke.l"
{ {
LEXTRACE(", "); LEXTRACE(", ");
return ','; return ',';
@ -3091,12 +3094,12 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 2: case 2:
YY_RULE_SETUP YY_RULE_SETUP
#line 120 "toke.l" #line 123 "toke.l"
BEGIN STARTDEFS; BEGIN STARTDEFS;
YY_BREAK YY_BREAK
case 3: case 3:
YY_RULE_SETUP YY_RULE_SETUP
#line 122 "toke.l" #line 125 "toke.l"
{ {
BEGIN INDEFS; BEGIN INDEFS;
LEXTRACE("DEFVAR "); LEXTRACE("DEFVAR ");
@ -3108,7 +3111,7 @@ YY_RULE_SETUP
case 4: case 4:
YY_RULE_SETUP YY_RULE_SETUP
#line 131 "toke.l" #line 134 "toke.l"
{ {
BEGIN STARTDEFS; BEGIN STARTDEFS;
LEXTRACE(", "); LEXTRACE(", ");
@ -3117,7 +3120,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 5: case 5:
YY_RULE_SETUP YY_RULE_SETUP
#line 137 "toke.l" #line 140 "toke.l"
{ {
LEXTRACE("= "); LEXTRACE("= ");
return '='; return '=';
@ -3125,7 +3128,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 6: case 6:
YY_RULE_SETUP YY_RULE_SETUP
#line 142 "toke.l" #line 145 "toke.l"
{ {
LEXTRACE("+= "); LEXTRACE("+= ");
return '+'; return '+';
@ -3133,7 +3136,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 7: case 7:
YY_RULE_SETUP YY_RULE_SETUP
#line 147 "toke.l" #line 150 "toke.l"
{ {
LEXTRACE("-= "); LEXTRACE("-= ");
return '-'; return '-';
@ -3141,7 +3144,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 8: case 8:
YY_RULE_SETUP YY_RULE_SETUP
#line 152 "toke.l" #line 155 "toke.l"
{ {
LEXTRACE("BEGINSTR "); LEXTRACE("BEGINSTR ");
sudoerslval.string = NULL; sudoerslval.string = NULL;
@ -3151,7 +3154,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 9: case 9:
YY_RULE_SETUP YY_RULE_SETUP
#line 159 "toke.l" #line 162 "toke.l"
{ {
LEXTRACE("WORD(2) "); LEXTRACE("WORD(2) ");
if (!fill(sudoerstext, sudoersleng)) if (!fill(sudoerstext, sudoersleng))
@ -3164,7 +3167,7 @@ YY_RULE_SETUP
case 10: case 10:
/* rule 10 can match eol */ /* rule 10 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 168 "toke.l" #line 171 "toke.l"
{ {
/* Line continuation char followed by newline. */ /* Line continuation char followed by newline. */
sudolineno++; sudolineno++;
@ -3173,7 +3176,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 11: case 11:
YY_RULE_SETUP YY_RULE_SETUP
#line 174 "toke.l" #line 177 "toke.l"
{ {
LEXTRACE("ENDSTR "); LEXTRACE("ENDSTR ");
BEGIN prev_state; BEGIN prev_state;
@ -3211,7 +3214,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 12: case 12:
YY_RULE_SETUP YY_RULE_SETUP
#line 209 "toke.l" #line 212 "toke.l"
{ {
LEXTRACE("BACKSLASH "); LEXTRACE("BACKSLASH ");
if (!append(sudoerstext, sudoersleng)) if (!append(sudoerstext, sudoersleng))
@ -3220,7 +3223,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 13: case 13:
YY_RULE_SETUP YY_RULE_SETUP
#line 215 "toke.l" #line 218 "toke.l"
{ {
LEXTRACE("STRBODY "); LEXTRACE("STRBODY ");
if (!append(sudoerstext, sudoersleng)) if (!append(sudoerstext, sudoersleng))
@ -3231,7 +3234,7 @@ YY_RULE_SETUP
case 14: case 14:
YY_RULE_SETUP YY_RULE_SETUP
#line 223 "toke.l" #line 226 "toke.l"
{ {
/* quoted fnmatch glob char, pass verbatim */ /* quoted fnmatch glob char, pass verbatim */
LEXTRACE("QUOTEDCHAR "); LEXTRACE("QUOTEDCHAR ");
@ -3242,7 +3245,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 15: case 15:
YY_RULE_SETUP YY_RULE_SETUP
#line 231 "toke.l" #line 234 "toke.l"
{ {
/* quoted sudoers special char, strip backslash */ /* quoted sudoers special char, strip backslash */
LEXTRACE("QUOTEDCHAR "); LEXTRACE("QUOTEDCHAR ");
@ -3254,7 +3257,7 @@ YY_RULE_SETUP
case 16: case 16:
/* rule 16 can match eol */ /* rule 16 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 239 "toke.l" #line 242 "toke.l"
{ {
BEGIN INITIAL; BEGIN INITIAL;
sudoersless(0); sudoersless(0);
@ -3264,7 +3267,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 17: case 17:
YY_RULE_SETUP YY_RULE_SETUP
#line 246 "toke.l" #line 249 "toke.l"
{ {
LEXTRACE("ARG "); LEXTRACE("ARG ");
if (!fill_args(sudoerstext, sudoersleng, sawspace)) if (!fill_args(sudoerstext, sudoersleng, sawspace))
@ -3275,7 +3278,7 @@ YY_RULE_SETUP
case 18: case 18:
YY_RULE_SETUP YY_RULE_SETUP
#line 254 "toke.l" #line 257 "toke.l"
{ {
/* Only return DIGEST if the length is correct. */ /* Only return DIGEST if the length is correct. */
yy_size_t digest_len = yy_size_t digest_len =
@ -3293,7 +3296,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 19: case 19:
YY_RULE_SETUP YY_RULE_SETUP
#line 269 "toke.l" #line 272 "toke.l"
{ {
/* Only return DIGEST if the length is correct. */ /* Only return DIGEST if the length is correct. */
yy_size_t len, digest_len = yy_size_t len, digest_len =
@ -3318,7 +3321,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 20: case 20:
YY_RULE_SETUP YY_RULE_SETUP
#line 291 "toke.l" #line 294 "toke.l"
{ {
if (continued) { if (continued) {
sudoerserror(N_("invalid line continuation")); sudoerserror(N_("invalid line continuation"));
@ -3333,7 +3336,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 21: case 21:
YY_RULE_SETUP YY_RULE_SETUP
#line 303 "toke.l" #line 306 "toke.l"
{ {
if (continued) { if (continued) {
sudoerserror(N_("invalid line continuation")); sudoerserror(N_("invalid line continuation"));
@ -3349,7 +3352,7 @@ YY_RULE_SETUP
case 22: case 22:
/* rule 22 can match eol */ /* rule 22 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 315 "toke.l" #line 318 "toke.l"
{ {
if (continued) { if (continued) {
sudoerserror(N_("invalid line continuation")); sudoerserror(N_("invalid line continuation"));
@ -3369,7 +3372,7 @@ YY_RULE_SETUP
case 23: case 23:
/* rule 23 can match eol */ /* rule 23 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 331 "toke.l" #line 334 "toke.l"
{ {
if (continued) { if (continued) {
sudoerserror(N_("invalid line continuation")); sudoerserror(N_("invalid line continuation"));
@ -3388,7 +3391,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 24: case 24:
YY_RULE_SETUP YY_RULE_SETUP
#line 347 "toke.l" #line 350 "toke.l"
{ {
char deftype; char deftype;
int n; int n;
@ -3432,7 +3435,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 25: case 25:
YY_RULE_SETUP YY_RULE_SETUP
#line 388 "toke.l" #line 391 "toke.l"
{ {
int n; int n;
@ -3462,7 +3465,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 26: case 26:
YY_RULE_SETUP YY_RULE_SETUP
#line 415 "toke.l" #line 418 "toke.l"
{ {
/* cmnd does not require passwd for this user */ /* cmnd does not require passwd for this user */
LEXTRACE("NOPASSWD "); LEXTRACE("NOPASSWD ");
@ -3471,7 +3474,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 27: case 27:
YY_RULE_SETUP YY_RULE_SETUP
#line 421 "toke.l" #line 424 "toke.l"
{ {
/* cmnd requires passwd for this user */ /* cmnd requires passwd for this user */
LEXTRACE("PASSWD "); LEXTRACE("PASSWD ");
@ -3480,7 +3483,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 28: case 28:
YY_RULE_SETUP YY_RULE_SETUP
#line 427 "toke.l" #line 430 "toke.l"
{ {
LEXTRACE("NOEXEC "); LEXTRACE("NOEXEC ");
return NOEXEC; return NOEXEC;
@ -3488,7 +3491,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 29: case 29:
YY_RULE_SETUP YY_RULE_SETUP
#line 432 "toke.l" #line 435 "toke.l"
{ {
LEXTRACE("EXEC "); LEXTRACE("EXEC ");
return EXEC; return EXEC;
@ -3496,7 +3499,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 30: case 30:
YY_RULE_SETUP YY_RULE_SETUP
#line 437 "toke.l" #line 440 "toke.l"
{ {
LEXTRACE("SETENV "); LEXTRACE("SETENV ");
return SETENV; return SETENV;
@ -3504,7 +3507,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 31: case 31:
YY_RULE_SETUP YY_RULE_SETUP
#line 442 "toke.l" #line 445 "toke.l"
{ {
LEXTRACE("NOSETENV "); LEXTRACE("NOSETENV ");
return NOSETENV; return NOSETENV;
@ -3512,7 +3515,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 32: case 32:
YY_RULE_SETUP YY_RULE_SETUP
#line 447 "toke.l" #line 450 "toke.l"
{ {
LEXTRACE("LOG_OUTPUT "); LEXTRACE("LOG_OUTPUT ");
return LOG_OUTPUT; return LOG_OUTPUT;
@ -3520,7 +3523,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 33: case 33:
YY_RULE_SETUP YY_RULE_SETUP
#line 452 "toke.l" #line 455 "toke.l"
{ {
LEXTRACE("NOLOG_OUTPUT "); LEXTRACE("NOLOG_OUTPUT ");
return NOLOG_OUTPUT; return NOLOG_OUTPUT;
@ -3528,7 +3531,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 34: case 34:
YY_RULE_SETUP YY_RULE_SETUP
#line 457 "toke.l" #line 460 "toke.l"
{ {
LEXTRACE("LOG_INPUT "); LEXTRACE("LOG_INPUT ");
return LOG_INPUT; return LOG_INPUT;
@ -3536,7 +3539,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 35: case 35:
YY_RULE_SETUP YY_RULE_SETUP
#line 462 "toke.l" #line 465 "toke.l"
{ {
LEXTRACE("NOLOG_INPUT "); LEXTRACE("NOLOG_INPUT ");
return NOLOG_INPUT; return NOLOG_INPUT;
@ -3544,7 +3547,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 36: case 36:
YY_RULE_SETUP YY_RULE_SETUP
#line 467 "toke.l" #line 470 "toke.l"
{ {
LEXTRACE("MAIL "); LEXTRACE("MAIL ");
return MAIL; return MAIL;
@ -3552,7 +3555,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 37: case 37:
YY_RULE_SETUP YY_RULE_SETUP
#line 472 "toke.l" #line 475 "toke.l"
{ {
LEXTRACE("NOMAIL "); LEXTRACE("NOMAIL ");
return NOMAIL; return NOMAIL;
@ -3560,7 +3563,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 38: case 38:
YY_RULE_SETUP YY_RULE_SETUP
#line 477 "toke.l" #line 480 "toke.l"
{ {
LEXTRACE("FOLLOW "); LEXTRACE("FOLLOW ");
return FOLLOWLNK; return FOLLOWLNK;
@ -3568,7 +3571,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 39: case 39:
YY_RULE_SETUP YY_RULE_SETUP
#line 482 "toke.l" #line 485 "toke.l"
{ {
LEXTRACE("NOFOLLOW "); LEXTRACE("NOFOLLOW ");
return NOFOLLOWLNK; return NOFOLLOWLNK;
@ -3576,7 +3579,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 40: case 40:
YY_RULE_SETUP YY_RULE_SETUP
#line 487 "toke.l" #line 490 "toke.l"
{ {
if (sudoerstext[0] == '+') if (sudoerstext[0] == '+')
sudoerserror(N_("empty netgroup")); sudoerserror(N_("empty netgroup"));
@ -3588,7 +3591,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 41: case 41:
YY_RULE_SETUP YY_RULE_SETUP
#line 496 "toke.l" #line 499 "toke.l"
{ {
/* netgroup */ /* netgroup */
if (!fill(sudoerstext, sudoersleng)) if (!fill(sudoerstext, sudoersleng))
@ -3599,7 +3602,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 42: case 42:
YY_RULE_SETUP YY_RULE_SETUP
#line 504 "toke.l" #line 507 "toke.l"
{ {
/* group */ /* group */
if (!fill(sudoerstext, sudoersleng)) if (!fill(sudoerstext, sudoersleng))
@ -3610,7 +3613,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 43: case 43:
YY_RULE_SETUP YY_RULE_SETUP
#line 512 "toke.l" #line 515 "toke.l"
{ {
if (!fill(sudoerstext, sudoersleng)) if (!fill(sudoerstext, sudoersleng))
yyterminate(); yyterminate();
@ -3620,7 +3623,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 44: case 44:
YY_RULE_SETUP YY_RULE_SETUP
#line 519 "toke.l" #line 522 "toke.l"
{ {
if (!fill(sudoerstext, sudoersleng)) if (!fill(sudoerstext, sudoersleng))
yyterminate(); yyterminate();
@ -3630,7 +3633,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 45: case 45:
YY_RULE_SETUP YY_RULE_SETUP
#line 526 "toke.l" #line 529 "toke.l"
{ {
if (!ipv6_valid(sudoerstext)) { if (!ipv6_valid(sudoerstext)) {
sudoerserror(N_("invalid IPv6 address")); sudoerserror(N_("invalid IPv6 address"));
@ -3645,7 +3648,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 46: case 46:
YY_RULE_SETUP YY_RULE_SETUP
#line 538 "toke.l" #line 541 "toke.l"
{ {
if (!ipv6_valid(sudoerstext)) { if (!ipv6_valid(sudoerstext)) {
sudoerserror(N_("invalid IPv6 address")); sudoerserror(N_("invalid IPv6 address"));
@ -3660,7 +3663,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 47: case 47:
YY_RULE_SETUP YY_RULE_SETUP
#line 550 "toke.l" #line 553 "toke.l"
{ {
LEXTRACE("ALL "); LEXTRACE("ALL ");
return ALL; return ALL;
@ -3669,7 +3672,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 48: case 48:
YY_RULE_SETUP YY_RULE_SETUP
#line 556 "toke.l" #line 559 "toke.l"
{ {
LEXTRACE("CMND_TIMEOUT "); LEXTRACE("CMND_TIMEOUT ");
return CMND_TIMEOUT; return CMND_TIMEOUT;
@ -3677,7 +3680,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 49: case 49:
YY_RULE_SETUP YY_RULE_SETUP
#line 561 "toke.l" #line 564 "toke.l"
{ {
LEXTRACE("NOTBEFORE "); LEXTRACE("NOTBEFORE ");
return NOTBEFORE; return NOTBEFORE;
@ -3685,7 +3688,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 50: case 50:
YY_RULE_SETUP YY_RULE_SETUP
#line 566 "toke.l" #line 569 "toke.l"
{ {
LEXTRACE("NOTAFTER "); LEXTRACE("NOTAFTER ");
return NOTAFTER; return NOTAFTER;
@ -3693,7 +3696,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 51: case 51:
YY_RULE_SETUP YY_RULE_SETUP
#line 571 "toke.l" #line 574 "toke.l"
{ {
LEXTRACE("CWD "); LEXTRACE("CWD ");
prev_state = YY_START; prev_state = YY_START;
@ -3703,7 +3706,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 52: case 52:
YY_RULE_SETUP YY_RULE_SETUP
#line 578 "toke.l" #line 581 "toke.l"
{ {
LEXTRACE("CHROOT "); LEXTRACE("CHROOT ");
prev_state = YY_START; prev_state = YY_START;
@ -3713,7 +3716,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 53: case 53:
YY_RULE_SETUP YY_RULE_SETUP
#line 585 "toke.l" #line 588 "toke.l"
{ {
#ifdef HAVE_SELINUX #ifdef HAVE_SELINUX
LEXTRACE("ROLE "); LEXTRACE("ROLE ");
@ -3725,7 +3728,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 54: case 54:
YY_RULE_SETUP YY_RULE_SETUP
#line 594 "toke.l" #line 597 "toke.l"
{ {
#ifdef HAVE_SELINUX #ifdef HAVE_SELINUX
LEXTRACE("TYPE "); LEXTRACE("TYPE ");
@ -3737,7 +3740,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 55: case 55:
YY_RULE_SETUP YY_RULE_SETUP
#line 602 "toke.l" #line 605 "toke.l"
{ {
#ifdef HAVE_PRIV_SET #ifdef HAVE_PRIV_SET
LEXTRACE("PRIVS "); LEXTRACE("PRIVS ");
@ -3749,7 +3752,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 56: case 56:
YY_RULE_SETUP YY_RULE_SETUP
#line 611 "toke.l" #line 614 "toke.l"
{ {
#ifdef HAVE_PRIV_SET #ifdef HAVE_PRIV_SET
LEXTRACE("LIMITPRIVS "); LEXTRACE("LIMITPRIVS ");
@ -3761,7 +3764,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 57: case 57:
YY_RULE_SETUP YY_RULE_SETUP
#line 620 "toke.l" #line 623 "toke.l"
{ {
got_alias: got_alias:
if (!fill(sudoerstext, sudoersleng)) if (!fill(sudoerstext, sudoersleng))
@ -3772,7 +3775,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 58: case 58:
YY_RULE_SETUP YY_RULE_SETUP
#line 628 "toke.l" #line 631 "toke.l"
{ {
/* XXX - no way to specify digest for command */ /* XXX - no way to specify digest for command */
/* no command args allowed for Defaults!/path */ /* no command args allowed for Defaults!/path */
@ -3784,7 +3787,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 59: case 59:
YY_RULE_SETUP YY_RULE_SETUP
#line 637 "toke.l" #line 640 "toke.l"
{ {
digest_type = SUDO_DIGEST_SHA224; digest_type = SUDO_DIGEST_SHA224;
BEGIN WANTDIGEST; BEGIN WANTDIGEST;
@ -3794,7 +3797,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 60: case 60:
YY_RULE_SETUP YY_RULE_SETUP
#line 644 "toke.l" #line 647 "toke.l"
{ {
digest_type = SUDO_DIGEST_SHA256; digest_type = SUDO_DIGEST_SHA256;
BEGIN WANTDIGEST; BEGIN WANTDIGEST;
@ -3804,7 +3807,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 61: case 61:
YY_RULE_SETUP YY_RULE_SETUP
#line 651 "toke.l" #line 654 "toke.l"
{ {
digest_type = SUDO_DIGEST_SHA384; digest_type = SUDO_DIGEST_SHA384;
BEGIN WANTDIGEST; BEGIN WANTDIGEST;
@ -3814,7 +3817,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 62: case 62:
YY_RULE_SETUP YY_RULE_SETUP
#line 658 "toke.l" #line 661 "toke.l"
{ {
digest_type = SUDO_DIGEST_SHA512; digest_type = SUDO_DIGEST_SHA512;
BEGIN WANTDIGEST; BEGIN WANTDIGEST;
@ -3824,7 +3827,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 63: case 63:
YY_RULE_SETUP YY_RULE_SETUP
#line 665 "toke.l" #line 668 "toke.l"
{ {
BEGIN GOTCMND; BEGIN GOTCMND;
LEXTRACE("COMMAND "); LEXTRACE("COMMAND ");
@ -3834,7 +3837,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 64: case 64:
YY_RULE_SETUP YY_RULE_SETUP
#line 672 "toke.l" #line 675 "toke.l"
{ {
BEGIN prev_state; BEGIN prev_state;
if (!fill(sudoerstext, sudoersleng)) if (!fill(sudoerstext, sudoersleng))
@ -3845,7 +3848,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 65: case 65:
YY_RULE_SETUP YY_RULE_SETUP
#line 680 "toke.l" #line 683 "toke.l"
{ {
/* directories can't have args... */ /* directories can't have args... */
if (sudoerstext[sudoersleng - 1] == '/') { if (sudoerstext[sudoersleng - 1] == '/') {
@ -3862,7 +3865,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 66: case 66:
YY_RULE_SETUP YY_RULE_SETUP
#line 694 "toke.l" #line 697 "toke.l"
{ {
LEXTRACE("BEGINSTR "); LEXTRACE("BEGINSTR ");
sudoerslval.string = NULL; sudoerslval.string = NULL;
@ -3872,7 +3875,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 67: case 67:
YY_RULE_SETUP YY_RULE_SETUP
#line 701 "toke.l" #line 704 "toke.l"
{ {
/* a word */ /* a word */
if (!fill(sudoerstext, sudoersleng)) if (!fill(sudoerstext, sudoersleng))
@ -3884,7 +3887,7 @@ YY_RULE_SETUP
case 68: case 68:
YY_RULE_SETUP YY_RULE_SETUP
#line 710 "toke.l" #line 713 "toke.l"
{ {
/* include file/directory */ /* include file/directory */
if (!fill(sudoerstext, sudoersleng)) if (!fill(sudoerstext, sudoersleng))
@ -3896,7 +3899,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 69: case 69:
YY_RULE_SETUP YY_RULE_SETUP
#line 719 "toke.l" #line 722 "toke.l"
{ {
LEXTRACE("BEGINSTR "); LEXTRACE("BEGINSTR ");
sudoerslval.string = NULL; sudoerslval.string = NULL;
@ -3907,7 +3910,7 @@ YY_RULE_SETUP
case 70: case 70:
YY_RULE_SETUP YY_RULE_SETUP
#line 727 "toke.l" #line 730 "toke.l"
{ {
LEXTRACE("( "); LEXTRACE("( ");
return '('; return '(';
@ -3915,7 +3918,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 71: case 71:
YY_RULE_SETUP YY_RULE_SETUP
#line 732 "toke.l" #line 735 "toke.l"
{ {
LEXTRACE(") "); LEXTRACE(") ");
return ')'; return ')';
@ -3923,7 +3926,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 72: case 72:
YY_RULE_SETUP YY_RULE_SETUP
#line 737 "toke.l" #line 740 "toke.l"
{ {
LEXTRACE(", "); LEXTRACE(", ");
return ','; return ',';
@ -3931,7 +3934,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 73: case 73:
YY_RULE_SETUP YY_RULE_SETUP
#line 742 "toke.l" #line 745 "toke.l"
{ {
LEXTRACE("= "); LEXTRACE("= ");
return '='; return '=';
@ -3939,7 +3942,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 74: case 74:
YY_RULE_SETUP YY_RULE_SETUP
#line 747 "toke.l" #line 750 "toke.l"
{ {
LEXTRACE(": "); LEXTRACE(": ");
return ':'; return ':';
@ -3947,7 +3950,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 75: case 75:
YY_RULE_SETUP YY_RULE_SETUP
#line 752 "toke.l" #line 755 "toke.l"
{ {
if (sudoersleng & 1) { if (sudoersleng & 1) {
LEXTRACE("!"); LEXTRACE("!");
@ -3958,7 +3961,7 @@ YY_RULE_SETUP
case 76: case 76:
/* rule 76 can match eol */ /* rule 76 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 759 "toke.l" #line 762 "toke.l"
{ {
if (YY_START == INSTR) { if (YY_START == INSTR) {
/* re-scan after changing state */ /* re-scan after changing state */
@ -3977,7 +3980,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 77: case 77:
YY_RULE_SETUP YY_RULE_SETUP
#line 775 "toke.l" #line 778 "toke.l"
{ /* throw away space/tabs */ { /* throw away space/tabs */
sawspace = true; /* but remember for fill_args */ sawspace = true; /* but remember for fill_args */
} }
@ -3985,7 +3988,7 @@ YY_RULE_SETUP
case 78: case 78:
/* rule 78 can match eol */ /* rule 78 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 779 "toke.l" #line 782 "toke.l"
{ {
sawspace = true; /* remember for fill_args */ sawspace = true; /* remember for fill_args */
sudolineno++; sudolineno++;
@ -3995,7 +3998,7 @@ YY_RULE_SETUP
case 79: case 79:
/* rule 79 can match eol */ /* rule 79 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 785 "toke.l" #line 788 "toke.l"
{ {
if (sudoerstext[sudoersleng - 1] == '\n') { if (sudoerstext[sudoersleng - 1] == '\n') {
/* comment ending in a newline */ /* comment ending in a newline */
@ -4013,7 +4016,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 80: case 80:
YY_RULE_SETUP YY_RULE_SETUP
#line 800 "toke.l" #line 803 "toke.l"
{ {
LEXTRACE("NOMATCH "); LEXTRACE("NOMATCH ");
return NOMATCH; return NOMATCH;
@ -4028,7 +4031,7 @@ case YY_STATE_EOF(INSTR):
case YY_STATE_EOF(WANTDIGEST): case YY_STATE_EOF(WANTDIGEST):
case YY_STATE_EOF(GOTINC): case YY_STATE_EOF(GOTINC):
case YY_STATE_EOF(EXPECTPATH): case YY_STATE_EOF(EXPECTPATH):
#line 805 "toke.l" #line 808 "toke.l"
{ {
if (!pop_include()) if (!pop_include())
yyterminate(); yyterminate();
@ -4036,10 +4039,10 @@ case YY_STATE_EOF(EXPECTPATH):
YY_BREAK YY_BREAK
case 81: case 81:
YY_RULE_SETUP YY_RULE_SETUP
#line 810 "toke.l" #line 813 "toke.l"
ECHO; ECHO;
YY_BREAK YY_BREAK
#line 4037 "toke.c" #line 4040 "toke.c"
case YY_END_OF_BUFFER: case YY_END_OF_BUFFER:
{ {
@ -5000,7 +5003,7 @@ void sudoersfree (void * ptr )
#define YYTABLES_NAME "yytables" #define YYTABLES_NAME "yytables"
#line 810 "toke.l" #line 813 "toke.l"
struct path_list { struct path_list {

View File

@ -50,6 +50,9 @@
# define NAMLEN(dirent) strlen((dirent)->d_name) # define NAMLEN(dirent) strlen((dirent)->d_name)
#endif #endif
// PVS Studio suppression
// -V::519, 1004, 1037
int sudolineno; /* current sudoers line number. */ int sudolineno; /* current sudoers line number. */
char *sudoers; /* sudoers file being parsed. */ char *sudoers; /* sudoers file being parsed. */
struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */ struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */

View File

@ -117,7 +117,7 @@ fill_cmnd(const char *src, size_t len)
*dst = '\0'; *dst = '\0';
/* Check for sudoedit specified as a fully-qualified path. */ /* Check for sudoedit specified as a fully-qualified path. */
if ((dst = strrchr(sudoerslval.command.cmnd, '/')) != NULL) { if ((dst = strrchr(sudoerslval.command.cmnd, '/')) != NULL) { // -V575
if (strcmp(dst, "/sudoedit") == 0) { if (strcmp(dst, "/sudoedit") == 0) {
if (sudoers_strict) { if (sudoers_strict) {
sudoerserror( sudoerserror(

View File

@ -477,7 +477,7 @@ edit_sudoers(struct sudoersfile *sp, char *editor, int editor_argc,
ac = editor_argc - 3; ac = editor_argc - 3;
if (lineno > 0) { if (lineno > 0) {
(void)snprintf(linestr, sizeof(linestr), "+%d", lineno); (void)snprintf(linestr, sizeof(linestr), "+%d", lineno);
editor_argv[ac++] = linestr; editor_argv[ac++] = linestr; // -V507
} }
editor_argv[ac++] = "--"; editor_argv[ac++] = "--";
editor_argv[ac++] = sp->tpath; editor_argv[ac++] = sp->tpath;

View File

@ -99,7 +99,7 @@ preload_dso(char *envp[], const char *dso_file)
* whether it was dynamically allocated. [TODO: plugin API] * whether it was dynamically allocated. [TODO: plugin API]
*/ */
if (preload_idx == -1 || !enabled) { if (preload_idx == -1 || !enabled) {
const int env_size = env_len + 1 + (preload_idx == -1) + enabled; const int env_size = env_len + 1 + (preload_idx == -1) + enabled; // -V547
char **nenvp = reallocarray(NULL, env_size, sizeof(*envp)); char **nenvp = reallocarray(NULL, env_size, sizeof(*envp));
if (nenvp == NULL) if (nenvp == NULL)

View File

@ -348,7 +348,7 @@ sesh_sudoedit(int argc, char *argv[])
if (argv[2] != NULL && strcmp(argv[2], "-h") == 0) { if (argv[2] != NULL && strcmp(argv[2], "-h") == 0) {
argv++; argv++;
argc--; argc--;
CLR(edit_flags, CD_SUDOEDIT_FOLLOW); CLR(edit_flags, CD_SUDOEDIT_FOLLOW); // -V753
} }
/* Check for -w flag (disallow directories writable by the user). */ /* Check for -w flag (disallow directories writable by the user). */
@ -399,7 +399,7 @@ sesh_sudoedit(int argc, char *argv[])
*/ */
run_cred.uid = run_cred.euid = geteuid(); run_cred.uid = run_cred.euid = geteuid();
run_cred.gid = run_cred.egid = getegid(); run_cred.gid = run_cred.egid = getegid();
run_cred.ngroups = getgroups(0, NULL); run_cred.ngroups = getgroups(0, NULL); // -V575
if (run_cred.ngroups > 0) { if (run_cred.ngroups > 0) {
run_cred.groups = reallocarray(NULL, run_cred.ngroups, run_cred.groups = reallocarray(NULL, run_cred.ngroups,
sizeof(GETGROUPS_T)); sizeof(GETGROUPS_T));

View File

@ -434,7 +434,8 @@ get_user_groups(const char *user, struct sudo_cred *cred)
maxgroups = NGROUPS_MAX; maxgroups = NGROUPS_MAX;
/* Note that macOS may return ngroups > NGROUPS_MAX. */ /* Note that macOS may return ngroups > NGROUPS_MAX. */
if ((cred->ngroups = getgroups(0, NULL)) > 0) { cred->ngroups = getgroups(0, NULL); // -V575
if (cred->ngroups > 0) {
/* Use groups from kernel if not at limit or source is static. */ /* Use groups from kernel if not at limit or source is static. */
if (cred->ngroups != maxgroups || group_source == GROUP_SOURCE_STATIC) { if (cred->ngroups != maxgroups || group_source == GROUP_SOURCE_STATIC) {
cred->groups = reallocarray(NULL, cred->ngroups, sizeof(GETGROUPS_T)); cred->groups = reallocarray(NULL, cred->ngroups, sizeof(GETGROUPS_T));

View File

@ -81,7 +81,7 @@ set_tmpdir(struct sudo_cred *user_cred)
saved_cred.euid = geteuid(); saved_cred.euid = geteuid();
saved_cred.gid = getgid(); saved_cred.gid = getgid();
saved_cred.egid = getegid(); saved_cred.egid = getegid();
saved_cred.ngroups = getgroups(0, NULL); saved_cred.ngroups = getgroups(0, NULL); // -V575
if (saved_cred.ngroups > 0) { if (saved_cred.ngroups > 0) {
saved_cred.groups = saved_cred.groups =
reallocarray(NULL, saved_cred.ngroups, sizeof(GETGROUPS_T)); reallocarray(NULL, saved_cred.ngroups, sizeof(GETGROUPS_T));
@ -216,7 +216,7 @@ sudo_edit_create_tfiles(struct command_details *command_details,
continue; continue;
} }
tf[j].ofile = files[i]; tf[j].ofile = files[i];
tf[j].osize = sb.st_size; tf[j].osize = sb.st_size; // -V614
mtim_get(&sb, tf[j].omtim); mtim_get(&sb, tf[j].omtim);
sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
"seteuid(%u)", (unsigned int)user_details.cred.uid); "seteuid(%u)", (unsigned int)user_details.cred.uid);