Avoid undefined behavior
* src/xheader.c (xheader_set_keyword_equal): Pass correct type to ctype macros. * src/transform.c (run_case_conv): Likewise.
This commit is contained in:
committed by
Sergey Poznyakoff
parent
f14558de94
commit
705fab49eb
@@ -430,21 +430,21 @@ run_case_conv (enum case_ctl_type case_ctl, char *ptr, size_t size)
|
||||
switch (case_ctl)
|
||||
{
|
||||
case ctl_upcase_next:
|
||||
case_ctl_buffer[0] = toupper (case_ctl_buffer[0]);
|
||||
case_ctl_buffer[0] = toupper ((unsigned char) case_ctl_buffer[0]);
|
||||
break;
|
||||
|
||||
case ctl_locase_next:
|
||||
case_ctl_buffer[0] = tolower (case_ctl_buffer[0]);
|
||||
case_ctl_buffer[0] = tolower ((unsigned char) case_ctl_buffer[0]);
|
||||
break;
|
||||
|
||||
case ctl_upcase:
|
||||
for (p = case_ctl_buffer; p < case_ctl_buffer + size; p++)
|
||||
*p = toupper (*p);
|
||||
*p = toupper ((unsigned char) *p);
|
||||
break;
|
||||
|
||||
case ctl_locase:
|
||||
for (p = case_ctl_buffer; p < case_ctl_buffer + size; p++)
|
||||
*p = tolower (*p);
|
||||
*p = tolower ((unsigned char) *p);
|
||||
break;
|
||||
|
||||
case ctl_stop:
|
||||
@@ -628,4 +628,3 @@ transform_name (char **pinput, int type)
|
||||
{
|
||||
return transform_name_fp (pinput, type, NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* POSIX extended headers for tar.
|
||||
|
||||
Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
@@ -168,12 +168,12 @@ xheader_set_keyword_equal (char *kw, char *eq)
|
||||
global = false;
|
||||
}
|
||||
|
||||
while (p > kw && isspace (*p))
|
||||
while (p > kw && isspace ((unsigned char) *p))
|
||||
p--;
|
||||
|
||||
*p = 0;
|
||||
|
||||
for (p = eq + 1; *p && isspace (*p); p++)
|
||||
for (p = eq + 1; *p && isspace ((unsigned char) *p); p++)
|
||||
;
|
||||
|
||||
if (strcmp (kw, "delete") == 0)
|
||||
|
||||
Reference in New Issue
Block a user