1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-04-29 05:25:51 +00:00

Fix various bugprone warnings (#397)

* Fix some warnings in main.c

main.c:678: narrowing conversion from 'unsigned long' to signed type 'int' is implementation-defined
main.c:493: The return value from the call to 'seteuid' is not checked.

* Fix some warnings in array operations

Instead of extracting typenumbers to an 'int', use the unsigned typenumber directly

array3.c:49: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined
array4.c:61: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined
array5.c:63: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined
array6.c:50: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined

* Resolve type mismatches for version numbers and propp flag

dir.c:1849: narrowing conversion from 'unsigned int' to signed type 'int'
dir.c:1850: narrowing conversion from 'unsigned int' to signed type 'int'
dir.c:2114: narrowing conversion from 'unsigned long' to signed type 'int'
dir.c:2207: narrowing conversion from 'unsigned int' to signed type 'int'

* Resolve type mismatches for version numbers and strlen result type

dsk.c:1072: narrowing conversion from 'unsigned long' to signed type 'int'
dsk.c:1108: narrowing conversion from 'unsigned long' to signed type 'int'
dsk.c:1549: narrowing conversion from 'unsigned long' to signed type 'int'
dsk.c:1712: narrowing conversion from 'unsigned long' to signed type 'int'
dsk.c:1751: narrowing conversion from 'unsigned long' to signed type 'int'
dsk.c:3426: narrowing conversion from 'unsigned int' to signed type 'int'

* Resolve type mismatches for strlen result type

ufs.c:213: narrowing conversion from 'unsigned long' to signed type 'int'
ufs.c:404: narrowing conversion from 'unsigned long' to signed type 'int'

* Resolve type error

uutils.c:117: 'signed char' to 'int' conversion [bugprone-signed-char-misuse,cert-str34-c]
This commit is contained in:
Nick Briggs
2021-09-16 17:24:25 -07:00
committed by GitHub
parent 6fedd97d21
commit 533c935e72
10 changed files with 36 additions and 39 deletions

View File

@@ -71,7 +71,7 @@
} }
static inline LispPTR static inline LispPTR
aref_switch(int type, LispPTR tos, LispPTR baseL, int index) aref_switch(unsigned type, LispPTR tos, LispPTR baseL, int index)
{ {
LispPTR result; LispPTR result;
DLword *wordp; DLword *wordp;

View File

@@ -33,7 +33,7 @@
/*** N_OP_aref1 -- op 266 (array index) ***/ /*** N_OP_aref1 -- op 266 (array index) ***/
LispPTR N_OP_aref1(register LispPTR arrayarg, register LispPTR inx) { LispPTR N_OP_aref1(register LispPTR arrayarg, register LispPTR inx) {
register LispPTR baseL; register LispPTR baseL;
register int type, index; register int index;
register OneDArray *arrayblk; register OneDArray *arrayblk;
/* verify array */ /* verify array */
@@ -45,12 +45,9 @@ LispPTR N_OP_aref1(register LispPTR arrayarg, register LispPTR inx) {
if (index >= arrayblk->totalsize) ERROR_EXIT(inx); if (index >= arrayblk->totalsize) ERROR_EXIT(inx);
index += arrayblk->offset; index += arrayblk->offset;
/* setup typenumber */
type = 0xFF & arrayblk->typenumber;
/* setup base */ /* setup base */
baseL = arrayblk->base; baseL = arrayblk->base;
/* disp on type */ /* disp on type */
return (aref_switch(type, inx, baseL, index)); return (aref_switch(arrayblk->typenumber, inx, baseL, index));
} /* end N_OP_aref1() */ } /* end N_OP_aref1() */

View File

@@ -42,7 +42,6 @@
/************************************************************************/ /************************************************************************/
LispPTR N_OP_aset1(register LispPTR data, LispPTR arrayarg, register int inx) { LispPTR N_OP_aset1(register LispPTR data, LispPTR arrayarg, register int inx) {
register int type;
register OneDArray *arrayblk; register OneDArray *arrayblk;
register LispPTR base; register LispPTR base;
register int new; register int new;
@@ -57,14 +56,11 @@ LispPTR N_OP_aset1(register LispPTR data, LispPTR arrayarg, register int inx) {
if (index >= arrayblk->totalsize) ERROR_EXIT(inx); if (index >= arrayblk->totalsize) ERROR_EXIT(inx);
index += arrayblk->offset; index += arrayblk->offset;
/* setup typenumber */
type = 0xFF & arrayblk->typenumber;
/* setup base */ /* setup base */
base = arrayblk->base; base = arrayblk->base;
/* disp on type */ /* disp on type */
aset_switch(type, inx); aset_switch(arrayblk->typenumber, inx);
doufn: doufn:
ERROR_EXIT(inx); ERROR_EXIT(inx);

View File

@@ -41,7 +41,6 @@
LispPTR N_OP_aref2(LispPTR arrayarg, LispPTR inx0, LispPTR inx1) { LispPTR N_OP_aref2(LispPTR arrayarg, LispPTR inx0, LispPTR inx1) {
#define REG #define REG
LispPTR baseL; LispPTR baseL;
int type;
int arindex, temp; int arindex, temp;
LispArray *arrayblk; LispArray *arrayblk;
int j; int j;
@@ -59,9 +58,6 @@ LispPTR N_OP_aref2(LispPTR arrayarg, LispPTR inx0, LispPTR inx1) {
arindex *= j; arindex *= j;
arindex += temp; arindex += temp;
/* setup typenumber */
type = 0xFF & arrayblk->typenumber;
/* disp on type */ /* disp on type */
return (aref_switch(type, inx1, baseL, arindex)); return (aref_switch(arrayblk->typenumber, inx1, baseL, arindex));
} /* end N_OP_aref2() */ } /* end N_OP_aref2() */

View File

@@ -26,7 +26,6 @@
/*** N_OP_aset2 -- op 357 (new-value array index0 index1) ***/ /*** N_OP_aset2 -- op 357 (new-value array index0 index1) ***/
LispPTR N_OP_aset2(register LispPTR data, LispPTR arrayarg, LispPTR inx0, LispPTR inx1) { LispPTR N_OP_aset2(register LispPTR data, LispPTR arrayarg, LispPTR inx0, LispPTR inx1) {
register int type;
register LispArray *arrayblk; register LispArray *arrayblk;
register LispPTR base; register LispPTR base;
register int new; register int new;
@@ -46,11 +45,8 @@ LispPTR N_OP_aset2(register LispPTR data, LispPTR arrayarg, LispPTR inx0, LispPT
index *= j; index *= j;
index += temp; index += temp;
/* setup typenumber */
type = 0xFF & arrayblk->typenumber;
/* disp on type */ /* disp on type */
aset_switch(type, inx1); aset_switch(arrayblk->typenumber, inx1);
doufn: doufn:
ERROR_EXIT(inx1); ERROR_EXIT(inx1);

View File

@@ -1602,7 +1602,7 @@ static int trim_finfo_highest(FINFO **fp, int highestp)
* Name: trim_finfo_version * Name: trim_finfo_version
* *
* Argument: FINFO **fp Linked list of the numerated FINFO structures. * Argument: FINFO **fp Linked list of the numerated FINFO structures.
* int rver Requested version number. * unsigned rver Requested version number.
* *
* Value: Returns the total number of files still remaining in **fp. * Value: Returns the total number of files still remaining in **fp.
* *
@@ -1614,7 +1614,7 @@ static int trim_finfo_highest(FINFO **fp, int highestp)
* are got rid of. * are got rid of.
*/ */
static int trim_finfo_version(FINFO **fp, int rver) static int trim_finfo_version(FINFO **fp, unsigned rver)
{ {
register FINFO *tp, *sp, *mp, *cp, *pp, *vp; register FINFO *tp, *sp, *mp, *cp, *pp, *vp;
register int num, pnum; register int num, pnum;
@@ -1840,7 +1840,8 @@ static FINFO **prepare_sort_buf(register FINFO *fp, register int n)
static int dsk_filecmp(FINFO **fp1, FINFO **fp2) static int dsk_filecmp(FINFO **fp1, FINFO **fp2)
{ {
register int res, v1, v2; register int res;
unsigned v1, v2;
if ((res = strcmp((*fp1)->no_ver_name, (*fp2)->no_ver_name)) != 0) return (res); if ((res = strcmp((*fp1)->no_ver_name, (*fp2)->no_ver_name)) != 0) return (res);
@@ -2032,7 +2033,8 @@ LispPTR COM_gen_files(register LispPTR *args)
#ifdef DOS #ifdef DOS
char drive[1]; char drive[1];
#endif #endif
int dskp, count, highestp, propp, fid, version; int dskp, count, highestp, fid;
unsigned propp, version;
register char *cp; register char *cp;
FINFO *fp; FINFO *fp;
int dsk_filecmp(), unix_filecmp(); int dsk_filecmp(), unix_filecmp();
@@ -2193,7 +2195,8 @@ LispPTR COM_next_file(register LispPTR *args)
register char *base; register char *base;
register DFINFO *dfp; register DFINFO *dfp;
register UFSGFS *gfsp; register UFSGFS *gfsp;
int finfoid, propp; int finfoid;
unsigned propp;
ERRSETJMP(-1); ERRSETJMP(-1);
Lisp_errno = &Dummy_errno; Lisp_errno = &Dummy_errno;

View File

@@ -851,7 +851,8 @@ LispPTR COM_closefile(register LispPTR *args)
LispPTR DSK_getfilename(register LispPTR *args) LispPTR DSK_getfilename(register LispPTR *args)
{ {
register char *base; register char *base;
register int len, dirp, rval; size_t len, rval;
register int dirp;
int fatp; int fatp;
char lfname[MAXPATHLEN]; char lfname[MAXPATHLEN];
char aname[MAXNAMLEN]; char aname[MAXNAMLEN];
@@ -1510,7 +1511,8 @@ LispPTR DSK_directorynamep(register LispPTR *args)
{ {
char dirname[MAXPATHLEN]; char dirname[MAXPATHLEN];
char fullname[MAXPATHLEN]; char fullname[MAXPATHLEN];
register int len, fatp; size_t len;
register int fatp;
register char *base; register char *base;
#ifdef DOS #ifdef DOS
char drive[1], rawname[MAXNAMLEN]; char drive[1], rawname[MAXNAMLEN];
@@ -1697,7 +1699,8 @@ LispPTR COM_getfileinfo(register LispPTR *args)
*bufp = sbuf.st_mode; *bufp = sbuf.st_mode;
return (ATOM_T); return (ATOM_T);
case AUTHOR: case AUTHOR: {
size_t rval;
#ifndef DOS #ifndef DOS
TIMEOUT(pwd = getpwuid(sbuf.st_uid)); TIMEOUT(pwd = getpwuid(sbuf.st_uid));
if (pwd == (struct passwd *)NULL) { if (pwd == (struct passwd *)NULL) {
@@ -1717,8 +1720,9 @@ LispPTR COM_getfileinfo(register LispPTR *args)
#endif /* BYTESWAP */ #endif /* BYTESWAP */
#endif /* DOS */ #endif /* DOS */
return (GetSmallp(rval)); return (GetSmallp(rval));
}
case ALL: case ALL: {
size_t rval;
/* /*
* The format of the buffer which has been allocated by Lisp * The format of the buffer which has been allocated by Lisp
* is as follows. * is as follows.
@@ -1756,7 +1760,7 @@ LispPTR COM_getfileinfo(register LispPTR *args)
#endif /* BYTESWAP */ #endif /* BYTESWAP */
#endif /* DOS */ #endif /* DOS */
return (GetSmallp(rval)); return (GetSmallp(rval));
}
default: return (NIL); default: return (NIL);
} }
} }
@@ -3395,7 +3399,8 @@ static int get_versionless(FileName *varray, char *file, char *dir)
static int check_vless_link(char *vless, FileName *varray, char *to_file, int *highest_p) static int check_vless_link(char *vless, FileName *varray, char *to_file, int *highest_p)
{ {
register int rval, max_no, found; register int rval, found;
unsigned max_no;
ino_t vless_ino; ino_t vless_ino;
struct stat sbuf; struct stat sbuf;
char dir[MAXPATHLEN], name[MAXNAMLEN], ver[VERSIONLEN]; char dir[MAXPATHLEN], name[MAXNAMLEN], ver[VERSIONLEN];

View File

@@ -490,7 +490,10 @@ int main(int argc, char *argv[])
#else #else
if (getuid() != geteuid()) { if (getuid() != geteuid()) {
fprintf(stderr, "Effective user is not real user. Setting euid to uid.\n"); fprintf(stderr, "Effective user is not real user. Setting euid to uid.\n");
seteuid(getuid()); if (seteuid(getuid()) == -1) {
fprintf(stderr, "Unable to reset effective user id to real user id\n");
exit(1);
}
} }
#endif /* DOS */ #endif /* DOS */
@@ -624,7 +627,6 @@ void start_lisp() {
int makepathname(char *src, char *dst) int makepathname(char *src, char *dst)
{ {
register int len;
register char *base, *cp; register char *base, *cp;
register struct passwd *pwd; register struct passwd *pwd;
char name[MAXPATHLEN]; char name[MAXPATHLEN];
@@ -675,7 +677,7 @@ int makepathname(char *src, char *dst)
if ((cp = (char *)strchr(base + 1, '/')) == 0) if ((cp = (char *)strchr(base + 1, '/')) == 0)
return (0); return (0);
else { else {
len = (UNSIGNED)cp - (UNSIGNED)base - 1; size_t len = cp - base - 1;
strncpy(name, base + 1, len); strncpy(name, base + 1, len);
name[len] = '\0'; name[len] = '\0';
#ifndef DOS #ifndef DOS

View File

@@ -156,7 +156,8 @@ exit_host_filesystem() {
LispPTR UFS_getfilename(LispPTR *args) LispPTR UFS_getfilename(LispPTR *args)
{ {
register char *base; register char *base;
register int len, rval; size_t len;
register int rval;
char lfname[MAXPATHLEN], file[MAXPATHLEN]; char lfname[MAXPATHLEN], file[MAXPATHLEN];
ERRSETJMP(NIL); ERRSETJMP(NIL);
@@ -369,7 +370,8 @@ LispPTR UFS_directorynamep(LispPTR *args)
{ {
char dirname[MAXPATHLEN]; char dirname[MAXPATHLEN];
char fullname[MAXPATHLEN]; char fullname[MAXPATHLEN];
register int len, rval; size_t len;
register int rval;
register char *base; register char *base;
struct stat sbuf; struct stat sbuf;

View File

@@ -114,7 +114,7 @@ int c_string_to_lisp_string(char *C, LispPTR Lisp) {
register size_t i; register size_t i;
register char *dp; register char *dp;
for (i = 0, dp = C; i < length + 1; i++) { for (i = 0, dp = C; i < length + 1; i++) {
int ch = *dp++; char ch = *dp++;
#ifdef DOS #ifdef DOS
if (ch == '\\') dp++; /* skip 2nd \ in \\ in C strings */ if (ch == '\\') dp++; /* skip 2nd \ in \\ in C strings */
#endif /* DOS */ #endif /* DOS */