Skip to content

Commit 533c935

Browse files
authored
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]
1 parent 6fedd97 commit 533c935

File tree

10 files changed

+36
-39
lines changed

10 files changed

+36
-39
lines changed

inc/my.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
}
7272

7373
static inline LispPTR
74-
aref_switch(int type, LispPTR tos, LispPTR baseL, int index)
74+
aref_switch(unsigned type, LispPTR tos, LispPTR baseL, int index)
7575
{
7676
LispPTR result;
7777
DLword *wordp;

src/array3.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
/*** N_OP_aref1 -- op 266 (array index) ***/
3434
LispPTR N_OP_aref1(register LispPTR arrayarg, register LispPTR inx) {
3535
register LispPTR baseL;
36-
register int type, index;
36+
register int index;
3737
register OneDArray *arrayblk;
3838

3939
/* verify array */
@@ -45,12 +45,9 @@ LispPTR N_OP_aref1(register LispPTR arrayarg, register LispPTR inx) {
4545
if (index >= arrayblk->totalsize) ERROR_EXIT(inx);
4646
index += arrayblk->offset;
4747

48-
/* setup typenumber */
49-
type = 0xFF & arrayblk->typenumber;
50-
5148
/* setup base */
5249
baseL = arrayblk->base;
5350

5451
/* disp on type */
55-
return (aref_switch(type, inx, baseL, index));
52+
return (aref_switch(arrayblk->typenumber, inx, baseL, index));
5653
} /* end N_OP_aref1() */

src/array4.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
/************************************************************************/
4343

4444
LispPTR N_OP_aset1(register LispPTR data, LispPTR arrayarg, register int inx) {
45-
register int type;
4645
register OneDArray *arrayblk;
4746
register LispPTR base;
4847
register int new;
@@ -57,14 +56,11 @@ LispPTR N_OP_aset1(register LispPTR data, LispPTR arrayarg, register int inx) {
5756
if (index >= arrayblk->totalsize) ERROR_EXIT(inx);
5857
index += arrayblk->offset;
5958

60-
/* setup typenumber */
61-
type = 0xFF & arrayblk->typenumber;
62-
6359
/* setup base */
6460
base = arrayblk->base;
6561

6662
/* disp on type */
67-
aset_switch(type, inx);
63+
aset_switch(arrayblk->typenumber, inx);
6864

6965
doufn:
7066
ERROR_EXIT(inx);

src/array5.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
LispPTR N_OP_aref2(LispPTR arrayarg, LispPTR inx0, LispPTR inx1) {
4242
#define REG
4343
LispPTR baseL;
44-
int type;
4544
int arindex, temp;
4645
LispArray *arrayblk;
4746
int j;
@@ -59,9 +58,6 @@ LispPTR N_OP_aref2(LispPTR arrayarg, LispPTR inx0, LispPTR inx1) {
5958
arindex *= j;
6059
arindex += temp;
6160

62-
/* setup typenumber */
63-
type = 0xFF & arrayblk->typenumber;
64-
6561
/* disp on type */
66-
return (aref_switch(type, inx1, baseL, arindex));
62+
return (aref_switch(arrayblk->typenumber, inx1, baseL, arindex));
6763
} /* end N_OP_aref2() */

src/array6.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
/*** N_OP_aset2 -- op 357 (new-value array index0 index1) ***/
2828
LispPTR N_OP_aset2(register LispPTR data, LispPTR arrayarg, LispPTR inx0, LispPTR inx1) {
29-
register int type;
3029
register LispArray *arrayblk;
3130
register LispPTR base;
3231
register int new;
@@ -46,11 +45,8 @@ LispPTR N_OP_aset2(register LispPTR data, LispPTR arrayarg, LispPTR inx0, LispPT
4645
index *= j;
4746
index += temp;
4847

49-
/* setup typenumber */
50-
type = 0xFF & arrayblk->typenumber;
51-
5248
/* disp on type */
53-
aset_switch(type, inx1);
49+
aset_switch(arrayblk->typenumber, inx1);
5450

5551
doufn:
5652
ERROR_EXIT(inx1);

src/dir.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1602,7 +1602,7 @@ static int trim_finfo_highest(FINFO **fp, int highestp)
16021602
* Name: trim_finfo_version
16031603
*
16041604
* Argument: FINFO **fp Linked list of the numerated FINFO structures.
1605-
* int rver Requested version number.
1605+
* unsigned rver Requested version number.
16061606
*
16071607
* Value: Returns the total number of files still remaining in **fp.
16081608
*
@@ -1614,7 +1614,7 @@ static int trim_finfo_highest(FINFO **fp, int highestp)
16141614
* are got rid of.
16151615
*/
16161616

1617-
static int trim_finfo_version(FINFO **fp, int rver)
1617+
static int trim_finfo_version(FINFO **fp, unsigned rver)
16181618
{
16191619
register FINFO *tp, *sp, *mp, *cp, *pp, *vp;
16201620
register int num, pnum;
@@ -1840,7 +1840,8 @@ static FINFO **prepare_sort_buf(register FINFO *fp, register int n)
18401840

18411841
static int dsk_filecmp(FINFO **fp1, FINFO **fp2)
18421842
{
1843-
register int res, v1, v2;
1843+
register int res;
1844+
unsigned v1, v2;
18441845

18451846
if ((res = strcmp((*fp1)->no_ver_name, (*fp2)->no_ver_name)) != 0) return (res);
18461847

@@ -2032,7 +2033,8 @@ LispPTR COM_gen_files(register LispPTR *args)
20322033
#ifdef DOS
20332034
char drive[1];
20342035
#endif
2035-
int dskp, count, highestp, propp, fid, version;
2036+
int dskp, count, highestp, fid;
2037+
unsigned propp, version;
20362038
register char *cp;
20372039
FINFO *fp;
20382040
int dsk_filecmp(), unix_filecmp();
@@ -2193,7 +2195,8 @@ LispPTR COM_next_file(register LispPTR *args)
21932195
register char *base;
21942196
register DFINFO *dfp;
21952197
register UFSGFS *gfsp;
2196-
int finfoid, propp;
2198+
int finfoid;
2199+
unsigned propp;
21972200

21982201
ERRSETJMP(-1);
21992202
Lisp_errno = &Dummy_errno;

src/dsk.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,8 @@ LispPTR COM_closefile(register LispPTR *args)
851851
LispPTR DSK_getfilename(register LispPTR *args)
852852
{
853853
register char *base;
854-
register int len, dirp, rval;
854+
size_t len, rval;
855+
register int dirp;
855856
int fatp;
856857
char lfname[MAXPATHLEN];
857858
char aname[MAXNAMLEN];
@@ -1510,7 +1511,8 @@ LispPTR DSK_directorynamep(register LispPTR *args)
15101511
{
15111512
char dirname[MAXPATHLEN];
15121513
char fullname[MAXPATHLEN];
1513-
register int len, fatp;
1514+
size_t len;
1515+
register int fatp;
15141516
register char *base;
15151517
#ifdef DOS
15161518
char drive[1], rawname[MAXNAMLEN];
@@ -1697,7 +1699,8 @@ LispPTR COM_getfileinfo(register LispPTR *args)
16971699
*bufp = sbuf.st_mode;
16981700
return (ATOM_T);
16991701

1700-
case AUTHOR:
1702+
case AUTHOR: {
1703+
size_t rval;
17011704
#ifndef DOS
17021705
TIMEOUT(pwd = getpwuid(sbuf.st_uid));
17031706
if (pwd == (struct passwd *)NULL) {
@@ -1717,8 +1720,9 @@ LispPTR COM_getfileinfo(register LispPTR *args)
17171720
#endif /* BYTESWAP */
17181721
#endif /* DOS */
17191722
return (GetSmallp(rval));
1720-
1721-
case ALL:
1723+
}
1724+
case ALL: {
1725+
size_t rval;
17221726
/*
17231727
* The format of the buffer which has been allocated by Lisp
17241728
* is as follows.
@@ -1756,7 +1760,7 @@ LispPTR COM_getfileinfo(register LispPTR *args)
17561760
#endif /* BYTESWAP */
17571761
#endif /* DOS */
17581762
return (GetSmallp(rval));
1759-
1763+
}
17601764
default: return (NIL);
17611765
}
17621766
}
@@ -3395,7 +3399,8 @@ static int get_versionless(FileName *varray, char *file, char *dir)
33953399

33963400
static int check_vless_link(char *vless, FileName *varray, char *to_file, int *highest_p)
33973401
{
3398-
register int rval, max_no, found;
3402+
register int rval, found;
3403+
unsigned max_no;
33993404
ino_t vless_ino;
34003405
struct stat sbuf;
34013406
char dir[MAXPATHLEN], name[MAXNAMLEN], ver[VERSIONLEN];

src/main.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,10 @@ int main(int argc, char *argv[])
490490
#else
491491
if (getuid() != geteuid()) {
492492
fprintf(stderr, "Effective user is not real user. Setting euid to uid.\n");
493-
seteuid(getuid());
493+
if (seteuid(getuid()) == -1) {
494+
fprintf(stderr, "Unable to reset effective user id to real user id\n");
495+
exit(1);
496+
}
494497
}
495498
#endif /* DOS */
496499

@@ -624,7 +627,6 @@ void start_lisp() {
624627

625628
int makepathname(char *src, char *dst)
626629
{
627-
register int len;
628630
register char *base, *cp;
629631
register struct passwd *pwd;
630632
char name[MAXPATHLEN];
@@ -675,7 +677,7 @@ int makepathname(char *src, char *dst)
675677
if ((cp = (char *)strchr(base + 1, '/')) == 0)
676678
return (0);
677679
else {
678-
len = (UNSIGNED)cp - (UNSIGNED)base - 1;
680+
size_t len = cp - base - 1;
679681
strncpy(name, base + 1, len);
680682
name[len] = '\0';
681683
#ifndef DOS

src/ufs.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@ exit_host_filesystem() {
156156
LispPTR UFS_getfilename(LispPTR *args)
157157
{
158158
register char *base;
159-
register int len, rval;
159+
size_t len;
160+
register int rval;
160161
char lfname[MAXPATHLEN], file[MAXPATHLEN];
161162

162163
ERRSETJMP(NIL);
@@ -369,7 +370,8 @@ LispPTR UFS_directorynamep(LispPTR *args)
369370
{
370371
char dirname[MAXPATHLEN];
371372
char fullname[MAXPATHLEN];
372-
register int len, rval;
373+
size_t len;
374+
register int rval;
373375
register char *base;
374376
struct stat sbuf;
375377

src/uutils.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ int c_string_to_lisp_string(char *C, LispPTR Lisp) {
114114
register size_t i;
115115
register char *dp;
116116
for (i = 0, dp = C; i < length + 1; i++) {
117-
int ch = *dp++;
117+
char ch = *dp++;
118118
#ifdef DOS
119119
if (ch == '\\') dp++; /* skip 2nd \ in \\ in C strings */
120120
#endif /* DOS */

0 commit comments

Comments
 (0)