From 61cf9fa731654b943a271dcf585b95062fbe7a4c Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 29 Nov 2003 22:07:57 +0000 Subject: [PATCH] jbeuhler-flexelint-bugs-found-20031128 This patch covers bugs found by running flexelint on the CVS code on Windows NT. - incorrect enum used in al_creds.cpp and various other files - use of local after it goes out of scope in al_wizard.cpp - uninitialized class members in afsclass/* - cm_config.c looks like it has code commented out accidentally - useless statement in alert.cpp - no default case handling in problems.cpp - strange use of & on booleans in set_clone.cpp - fgets() and fclose() on closed stream in cellconfig.c - memory leak in cellconfig.c - *scanf into variables of unknown length in cellconfig.c - incorrect pointer passed to getAFSServer() in cellconfig.c - possible buffer overflows in userok.c - address of array in bos.c - too many arguments for printf() in commands.c - return code not saved in bucoord/main.c - bad types for argv arrays in bucoord/main.c - probably incorrect initializer list in ol_verify.c - extra argument to TLog() in lwps.c - memory leak in cmd/cmd.c - lack of typecast on malloc() in a couple files - lower-case L for long constant in touch.c (is it a 1 or an l...) - parentheses nesting error in util_cr.c - apparently invalid case fall-through in util_cr.c - various memory leaks in util_cr.c - macro missing parens in crypt.c - macro missing parens in quad_cksum.c - null pointer deref in kpasswd.c (CVS work in progress?) - Print_bos_ProcessState_p() code does not look correct - extra argument to printf() in kas.c - typo in vsprocs.c - macro missing parens in iomgr.c - address of array in threadname.c - storing result of getch() in char type in waitkey.c (may not match EOF constant) - storing pointer to local car in global in ptserver.c (benign -- it is in main()) - address of array in rx_lwp.c - macro missing parens in rx_packet.h - impossible == (signed vs. unsigned?) in rxdebug.c - bogus constants in xdr.c and xdr_array.c (possible security implications?) - incorrect test of fd for open file in update/server.c - dangerous unparenthesized macro in get_krbrlm.c - buffer overrun in regex.c - missing comma causes string concat and bad array init in vlclient.c - comparison of string < 0 in ntops.c - default case has no code in vos.c -- Joe Buehler >>>> Comments: Several comments for FIXME left in the code - unaddressed --- src/WINNT/afsapplib/al_creds.cpp | 2 +- src/WINNT/afsapplib/al_wizard.cpp | 2 +- src/WINNT/afsclass/c_grp.cpp | 1 + src/WINNT/afsclass/c_svr.cpp | 1 + src/WINNT/afsclass/c_usr.cpp | 3 ++- src/WINNT/afssvrmgr/alert.cpp | 1 - src/WINNT/afssvrmgr/problems.cpp | 2 ++ src/WINNT/afssvrmgr/set_clone.cpp | 2 +- src/auth/cellconfig.c | 7 +++++-- src/auth/userok.c | 8 ++++---- src/bucoord/main.c | 2 +- src/budb/ol_verify.c | 1 + src/cmd/cmd.c | 1 + src/comerr/compile_et.c | 2 +- src/config/mkvers.c | 2 +- src/config/touch.c | 3 ++- src/config/util_cr.c | 24 ++++++++++++++++-------- src/des/crypt.c | 2 +- src/des/quad_cksum.c | 4 ++-- src/kauth/kpasswd.c | 1 + src/libadmin/test/bos.c | 1 + src/libadmin/test/kas.c | 2 +- src/libadmin/vos/vsprocs.c | 1 + src/lwp/iomgr.c | 2 +- src/lwp/threadname.c | 4 ++-- src/lwp/waitkey.c | 2 +- src/ptserver/ptserver.c | 6 ++---- src/rx/rx_lwp.c | 2 +- src/rx/rx_packet.h | 4 ++-- src/rx/rxdebug.c | 2 +- src/rx/xdr.c | 1 + src/rx/xdr_array.c | 1 + src/rxgen/rpc_main.c | 2 +- src/update/server.c | 7 +------ src/util/get_krbrlm.c | 4 ++-- src/util/regex.c | 6 +++--- src/vlserver/vlclient.c | 4 +++- src/vol/ntops.c | 2 +- 38 files changed, 71 insertions(+), 53 deletions(-) diff --git a/src/WINNT/afsapplib/al_creds.cpp b/src/WINNT/afsapplib/al_creds.cpp index 43acc5553..237a606f6 100644 --- a/src/WINNT/afsapplib/al_creds.cpp +++ b/src/WINNT/afsapplib/al_creds.cpp @@ -954,7 +954,7 @@ BOOL AfsAppLib_IsUserAdmin (PVOID hCreds, LPTSTR pszUser) kas_principalEntry_t Entry; if (kas_PrincipalGet (hCell, NULL, &Identity, &Entry, &status)) { - if (Entry.adminSetting == ADMIN) + if (Entry.adminSetting == KAS_ADMIN) rc = TRUE; } diff --git a/src/WINNT/afsapplib/al_wizard.cpp b/src/WINNT/afsapplib/al_wizard.cpp index 63de35446..fe8b44f6b 100644 --- a/src/WINNT/afsapplib/al_wizard.cpp +++ b/src/WINNT/afsapplib/al_wizard.cpp @@ -168,6 +168,7 @@ void WIZARD::SetDialogTemplate (int iddTemplate, int idcLeftPane, int idcRightPa void WIZARD::SetGraphic (int idbGraphic16, int idbGraphic256) { LPRGBQUAD pargb = NULL; + RGBQUAD argb[256]; m_idbGraphic16 = idbGraphic16; m_idbGraphic256 = idbGraphic256; @@ -202,7 +203,6 @@ void WIZARD::SetGraphic (int idbGraphic16, int idbGraphic256) HDC hdc = CreateCompatibleDC (NULL); HBITMAP bmpOld = (HBITMAP)SelectObject (hdc, m_bmpGraphic256); - RGBQUAD argb[256]; GetDIBColorTable (hdc, 0, 256, argb); pargb = argb; diff --git a/src/WINNT/afsclass/c_grp.cpp b/src/WINNT/afsclass/c_grp.cpp index cddcd9574..44a04b141 100644 --- a/src/WINNT/afsclass/c_grp.cpp +++ b/src/WINNT/afsclass/c_grp.cpp @@ -41,6 +41,7 @@ PTSGROUP::PTSGROUP (LPCELL lpCellParent, LPTSTR pszGroup) m_mszMembers = NULL; m_mszMemberOf = NULL; m_mszOwnerOf = NULL; + memset(&m_gs, 0, sizeof(m_gs)); } diff --git a/src/WINNT/afsclass/c_svr.cpp b/src/WINNT/afsclass/c_svr.cpp index b1269cc94..01ef4b633 100644 --- a/src/WINNT/afsclass/c_svr.cpp +++ b/src/WINNT/afsclass/c_svr.cpp @@ -89,6 +89,7 @@ SERVER::SERVER (LPCELL lpCellParent, LPTSTR pszName) m_fDelete = FALSE; m_lastStatus = 0; + m_fVLDBOutOfDate = FALSE; /* FIXME: added because it was missing */ m_fStatusOutOfDate = TRUE; memset (&m_ss, 0x00, sizeof(SERVERSTATUS)); } diff --git a/src/WINNT/afsclass/c_usr.cpp b/src/WINNT/afsclass/c_usr.cpp index 66dd2bdeb..dafe17424 100644 --- a/src/WINNT/afsclass/c_usr.cpp +++ b/src/WINNT/afsclass/c_usr.cpp @@ -39,6 +39,7 @@ USER::USER (LPCELL lpCellParent, LPTSTR pszPrincipal, LPTSTR pszInstance) m_fStatusOutOfDate = TRUE; m_mszOwnerOf = NULL; m_mszMemberOf = NULL; + memset(&m_us, 0, sizeof(m_us)); } @@ -190,7 +191,7 @@ BOOL USER::RefreshStatus (BOOL fNotify, ULONG *pStatus) CopyAnsiToString (szLastModPrincipal, wpGetKas.wpKasPrincipalGet.Data.lastModPrincipal.principal); CopyAnsiToString (szLastModInstance, wpGetKas.wpKasPrincipalGet.Data.lastModPrincipal.instance); - m_us.KASINFO.fIsAdmin = (wpGetKas.wpKasPrincipalGet.Data.adminSetting == ADMIN) ? TRUE : FALSE; + m_us.KASINFO.fIsAdmin = (wpGetKas.wpKasPrincipalGet.Data.adminSetting == KAS_ADMIN) ? TRUE : FALSE; m_us.KASINFO.fCanGetTickets = (wpGetKas.wpKasPrincipalGet.Data.tgsSetting == TGS) ? TRUE : FALSE; m_us.KASINFO.fEncrypt = (wpGetKas.wpKasPrincipalGet.Data.encSetting == ENCRYPT) ? TRUE : FALSE; m_us.KASINFO.fCanChangePassword = (wpGetKas.wpKasPrincipalGet.Data.cpwSetting == CHANGE_PASSWORD) ? TRUE : FALSE; diff --git a/src/WINNT/afssvrmgr/alert.cpp b/src/WINNT/afssvrmgr/alert.cpp index db8a1256c..a7b92bdcd 100644 --- a/src/WINNT/afssvrmgr/alert.cpp +++ b/src/WINNT/afssvrmgr/alert.cpp @@ -357,7 +357,6 @@ void Alert_Scout_ServerStatus (LPIDENT lpi, ULONG status) lpoa->nAlerts ++; lpoa->aAlerts[ iInsert ].alert = alertTIMEOUT; lpoa->aAlerts[ iInsert ].aiTIMEOUT.status = status; - lpoa->aAlerts[ iInsert ].aiTIMEOUT.stLastAttempt; GetSystemTime (&lpoa->aAlerts[ iInsert ].aiTIMEOUT.stLastAttempt); fChanged = TRUE; diff --git a/src/WINNT/afssvrmgr/problems.cpp b/src/WINNT/afssvrmgr/problems.cpp index 8249da398..59151b82a 100644 --- a/src/WINNT/afssvrmgr/problems.cpp +++ b/src/WINNT/afssvrmgr/problems.cpp @@ -210,6 +210,8 @@ void Problems_OnRefresh (HWND hDlg, LPIDENT lpi) GetString (szText, IDS_AGGREGATE_NO_PROBLEMS); else if (lpi->fIsFileset()) GetString (szText, IDS_FILESET_NO_PROBLEMS); + else + wsprintf (szText, TEXT("UNEXPECTED CONDITION in problems.cpp")); SetDlgItemText (hDlg, IDC_PROBLEM_TEXT, szText); break; diff --git a/src/WINNT/afssvrmgr/set_clone.cpp b/src/WINNT/afssvrmgr/set_clone.cpp index 6bfdcab80..b0dbc3fe6 100644 --- a/src/WINNT/afssvrmgr/set_clone.cpp +++ b/src/WINNT/afssvrmgr/set_clone.cpp @@ -280,7 +280,7 @@ void Filesets_Clonesys_OnSelect (HWND hDlg, LPSET_CLONESYS_PARAMS pcsp) if (!fEnable) CheckDlgButton (hDlg, IDC_CLONE_AGG_LIMIT, FALSE); - fEnable &= IsDlgButtonChecked (hDlg, IDC_CLONE_AGG_LIMIT) && pcsp->fEnumedAggregs; + fEnable = fEnable && IsDlgButtonChecked (hDlg, IDC_CLONE_AGG_LIMIT) && pcsp->fEnumedAggregs; EnableWindow (GetDlgItem (hDlg, IDC_CLONE_AGG), fEnable); fEnable = IsDlgButtonChecked (hDlg, IDC_CLONE_PREFIX_LIMIT); diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index c02a77067..d782a8081 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -306,8 +306,6 @@ afsconf_Open(register const char *adir) free(tdir); UNLOCK_GLOBAL_MUTEX return (struct afsconf_dir *)0; } - fgets(afs_confdir, 128, fp); - fclose(fp); } fgets(afs_confdir, 128, fp); fclose(fp); @@ -345,6 +343,7 @@ GetCellUnix(struct afsconf_dir *adir) strcompose(tbuffer, 256, adir->name, "/", AFSDIR_THISCELL_FILE, NULL); tf = fopen(tbuffer, "r"); if (tf) { + /* FIXME: buffer overflow waiting to happen */ rc = fscanf(tf, "%s", tbuffer); if (rc == 1) { adir->cellName = (char *)malloc(strlen(tbuffer) + 1); @@ -454,6 +453,7 @@ afsconf_OpenInternal(register struct afsconf_dir *adir, char *cell, if (code) { afsconf_CloseInternal(adir); fclose(tf); + free(curEntry); return -1; } if (linkedcell[0] != '\0') { @@ -571,10 +571,12 @@ ParseHostLine(char *aline, register struct sockaddr_in *addr, char *aname, if (*aline == '[') { if (aclone) *aclone = 1; + /* FIXME: length of aname unknown here */ code = sscanf(aline, "[%d.%d.%d.%d] #%s", &c1, &c2, &c3, &c4, aname); } else { if (aclone) *aclone = 0; + /* FIXME: length of aname unknown here */ code = sscanf(aline, "%d.%d.%d.%d #%s", &c1, &c2, &c3, &c4, aname); } if (code != 5) @@ -601,6 +603,7 @@ ParseCellLine(register char *aline, register char *aname, register char *alname) { register int code; + /* FIXME: length of aname, alname unknown here */ code = sscanf(aline, ">%s %s", aname, alname); if (code == 1) *alname = '\0'; diff --git a/src/auth/userok.c b/src/auth/userok.c index 8f2879920..400131197 100644 --- a/src/auth/userok.c +++ b/src/auth/userok.c @@ -113,7 +113,7 @@ afsconf_DeleteUser(adir, auser) register FILE *tf; register FILE *nf; register int flag; - char tname[64]; + char tname[64 + 1]; char *tp; int found; struct stat tstat; @@ -198,7 +198,7 @@ afsconf_GetNthUser(adir, an, abuffer, abufferLen) { char tbuffer[256]; register FILE *tf; - char tname[64]; + char tname[64 + 1]; register char *tp; register int flag; register afs_int32 code; @@ -228,14 +228,14 @@ afsconf_GetNthUser(adir, an, abuffer, abufferLen) } /* returns true iff user is in the UserList file */ -static +static int FindUser(adir, auser) struct afsconf_dir *adir; register char *auser; { char tbuffer[256]; register bufio_p bp; - char tname[64]; + char tname[64 + 1]; register int flag; register afs_int32 code; int rc; diff --git a/src/bucoord/main.c b/src/bucoord/main.c index 3424f7af7..1da1b109c 100644 --- a/src/bucoord/main.c +++ b/src/bucoord/main.c @@ -286,7 +286,7 @@ backupInit() rx_SetRxDeadTime(60); /* VLDB initialization */ - vldbClientInit(0, localauth, tcell, &cstruct, &ttoken); + code = vldbClientInit(0, localauth, tcell, &cstruct, &ttoken); if (code) return (code); diff --git a/src/budb/ol_verify.c b/src/budb/ol_verify.c index b2c48f2ed..2bb853366 100644 --- a/src/budb/ol_verify.c +++ b/src/budb/ol_verify.c @@ -961,6 +961,7 @@ verifyEntryChains(ut) static afs_int32(*checkEntry[NBLOCKTYPES]) () = { + /* FIXME: this list does not match typeName[] and may be incorrect */ 0, /* free block */ verifyVolFragEntry, verifyVolInfoEntry, verifyTapeEntry, verifyDumpEntry, 0 /* text block */ }; diff --git a/src/cmd/cmd.c b/src/cmd/cmd.c index bd84edddd..456d66b64 100644 --- a/src/cmd/cmd.c +++ b/src/cmd/cmd.c @@ -594,6 +594,7 @@ InsertInitOpcode(int *aargc, char **aargv) pinitopcode = (char *)malloc(sizeof(initcmd_opcode)); if (!pinitopcode) { fprintf(stderr, "%s: Can't malloc initial opcode space\n", aargv[0]); + free(newargv); return (NULL); } strcpy(pinitopcode, initcmd_opcode); diff --git a/src/comerr/compile_et.c b/src/comerr/compile_et.c index b96f97b4e..35c2bad59 100644 --- a/src/comerr/compile_et.c +++ b/src/comerr/compile_et.c @@ -57,7 +57,7 @@ extern int yylineno; char * xmalloc(unsigned int size) { - char *p = malloc(size); + char *p = (char *)malloc(size); if (!p) { perror(whoami); exit(1); diff --git a/src/config/mkvers.c b/src/config/mkvers.c index 9677259a5..bfad14ba3 100644 --- a/src/config/mkvers.c +++ b/src/config/mkvers.c @@ -205,7 +205,7 @@ main(int argc, char **argv) if (cml_prefix) { cml_string = - malloc(strlen("char ") + strlen(cml_prefix) + strlen(CML_STRING) + + (char *)malloc(strlen("char ") + strlen(cml_prefix) + strlen(CML_STRING) + 1); if (!cml_string) { printf("No space to use prefix in cml string, ignoring it.\n"); diff --git a/src/config/touch.c b/src/config/touch.c index 1d6411d02..75955018b 100644 --- a/src/config/touch.c +++ b/src/config/touch.c @@ -37,7 +37,8 @@ main(int argc, char *argv[]) if ((finfo.attrib & ~_A_ARCH) != _A_NORMAL) continue; fh = _open(finfo.name, _S_IWRITE | _O_BINARY | _S_IREAD | _O_RDWR); - pos = _lseek(fh, 0l, SEEK_END); + pos = _lseek(fh, 0L, SEEK_END); + buffer[0] = 0; _write(fh, buffer, 1); _chsize(fh, pos); _close(fh); diff --git a/src/config/util_cr.c b/src/config/util_cr.c index 7fbc9a731..c74a1c1d4 100644 --- a/src/config/util_cr.c +++ b/src/config/util_cr.c @@ -426,7 +426,7 @@ main(int argc, char *argv[]) break; case 3: //1.0.401 or 1.0.40a are the same; if ((isdigit(*ptr) == 0) // first 2 must be digit - || (isdigit(*(ptr + 1) == 0)) + || (isdigit(*(ptr + 1)) == 0) || (*(ptr + 1) != '0' && isdigit(*(ptr + 2)) == 0) // disallow 1.0.4b0 or 1.0.41a ) usuage(); @@ -452,6 +452,7 @@ main(int argc, char *argv[]) if (isdigit(*ptr) == 0 || isdigit(*(ptr + 1)) == 0) usuage(); pat2 = atoi(ptr); + break; default: usuage(); } @@ -460,7 +461,8 @@ main(int argc, char *argv[]) if (file == NULL) usuage(); len = filelength(_fileno(file)); - buf = (char *)malloc(len + 1); + save = (char *)malloc(len + 1); + buf = save; len = fread(buf, sizeof(char), len, file); buf[len] = 0; //set eof fclose(file); @@ -505,6 +507,7 @@ main(int argc, char *argv[]) buf = ptr + 1; } fclose(file); + free(save); return 0; } if (strcmp(argv[1], "~") == 0) { //check for file presence @@ -624,7 +627,8 @@ main(int argc, char *argv[]) if (file == NULL) exit(0xc000); len = filelength(_fileno(file)); - ch = (char *)malloc(len + 2); + save = (char *)malloc(len + 2); + ch = save; *ch++ = 0; /* a small hack to allow matching /r/n if /n is first character */ len = fread(ch, sizeof(char), len, file); file = freopen(fname, "wb", file); @@ -636,6 +640,7 @@ main(int argc, char *argv[]) ch++; } fclose(file); + free(save); return 0; } if (strcmp(argv[1], "-") == 0) { @@ -644,7 +649,8 @@ main(int argc, char *argv[]) if (file == NULL) exit(0xc000); len = filelength(_fileno(file)); - ch = (char *)malloc(len + 1); + save = (char *)malloc(len + 1); + ch = save; len = fread(ch, sizeof(char), len, file); file = freopen(fname, "wb", file); while (len-- > 0) { @@ -653,6 +659,7 @@ main(int argc, char *argv[]) ch++; } fclose(file); + free(save); return 0; } if (strstr(fname, ".et") == NULL) @@ -661,7 +668,8 @@ main(int argc, char *argv[]) if (file == NULL) exit(0xc000); len = filelength(_fileno(file)); - ch = (char *)malloc(len + 1); + save = (char *)malloc(len + 1); + ch = save; len = fread(ch, sizeof(char), len, file); file = freopen(fname, "wb", file); while (len-- > 0) { @@ -675,9 +683,9 @@ main(int argc, char *argv[]) pvar[i] = argv[i + 1]; pvar[argc - 1] = NULL; pvar[0] = argv[1]; - l = _spawnvp(_P_WAIT, argv[1], pvar); - if (ch) - free(ch); + (void)_spawnvp(_P_WAIT, argv[1], pvar); + if (save) + free(save); if (pvar) free(pvar); return 0; diff --git a/src/des/crypt.c b/src/des/crypt.c index fe1ee3129..ba0b4db92 100644 --- a/src/des/crypt.c +++ b/src/des/crypt.c @@ -283,7 +283,7 @@ typedef union { #define LOAD(d,d0,d1,bl) d0 = (bl).b32.i0, d1 = (bl).b32.i1 #define LOADREG(d,d0,d1,s,s0,s1) d0 = s0, d1 = s1 #define OR(d,d0,d1,bl) d0 |= (bl).b32.i0, d1 |= (bl).b32.i1 -#define STORE(s,s0,s1,bl) (bl).b32.i0 = s0, (bl).b32.i1 = s1 +#define STORE(s,s0,s1,bl) (bl).b32.i0 = (s0), (bl).b32.i1 = (s1) #define DCL_BLOCK(d,d0,d1) long d0, d1 #if defined(LARGEDATA) diff --git a/src/des/quad_cksum.c b/src/des/quad_cksum.c index 8d239fef7..7ca92de26 100644 --- a/src/des/quad_cksum.c +++ b/src/des/quad_cksum.c @@ -85,8 +85,8 @@ RCSID /* Definitions for byte swapping */ #ifdef LSBFIRST -#define vaxtohl(x) *((afs_uint32 *)(x)) -#define vaxtohs(x) *((unsigned short *)(x)) +#define vaxtohl(x) (*((afs_uint32 *)(x))) +#define vaxtohs(x) (*((unsigned short *)(x))) #else static afs_uint32 four_bytes_vax_to_nets(); #define vaxtohl(x) four_bytes_vax_to_nets((char *)(x)) diff --git a/src/kauth/kpasswd.c b/src/kauth/kpasswd.c index c1835485c..f7a55488b 100644 --- a/src/kauth/kpasswd.c +++ b/src/kauth/kpasswd.c @@ -185,6 +185,7 @@ password_ok(newpw, insist) { if (insist == 0) { /* see if it is reasonable, but don't get so obnoxious */ + /* FIXME: null pointer derefence!!! */ (*insist)++; /* so we don't get called again */ if (strlen(newpw) < 6) return 0; diff --git a/src/libadmin/test/bos.c b/src/libadmin/test/bos.c index 790d6c4a9..ec7b95ab2 100644 --- a/src/libadmin/test/bos.c +++ b/src/libadmin/test/bos.c @@ -632,6 +632,7 @@ static void Print_bos_ProcessState_p(bos_ProcessState_p state, const char *prefix) { printf("%sProcess state:\n", prefix); + /* FIXME: BOS_PROCESS_OK is 0, so this test is not right */ if (*state & BOS_PROCESS_OK) { printf("%s\tBOS_PROCESS_OK:\n", prefix); } diff --git a/src/libadmin/test/kas.c b/src/libadmin/test/kas.c index 2be3e0567..4de8be6aa 100644 --- a/src/libadmin/test/kas.c +++ b/src/libadmin/test/kas.c @@ -150,7 +150,7 @@ Print_kas_principalEntry_p(kas_principalEntry_p principal, const char *prefix) for (i = 0; i < KAS_ENCRYPTION_KEY_LEN; i++) { printf("%d ", principal->key.key[i]); } - printf("\n", prefix); + printf("\n"); printf("%sKey checksum %u\n", prefix, principal->keyCheckSum); printf("%sDays to password expire %d\n", prefix, diff --git a/src/libadmin/vos/vsprocs.c b/src/libadmin/vos/vsprocs.c index 6cedbc896..76378c778 100644 --- a/src/libadmin/vos/vsprocs.c +++ b/src/libadmin/vos/vsprocs.c @@ -4077,6 +4077,7 @@ UV_SetVolume(struct rx_connection *server, afs_int32 partition, if (tid) { etst = AFSVolEndTrans(server, tid, &rcode); + /* FIXME: this looks like a typo */ if (etst || etst) { if (!tst) tst = (etst ? etst : rcode); diff --git a/src/lwp/iomgr.c b/src/lwp/iomgr.c index 912893013..388987cec 100644 --- a/src/lwp/iomgr.c +++ b/src/lwp/iomgr.c @@ -88,7 +88,7 @@ typedef unsigned char bool; #define TRUE 1 #ifndef MIN -#define MIN(a,b) ((a)>(b)) ? b : a +#define MIN(a,b) (((a)>(b)) ? (b) : (a)) #endif #ifndef NSIG diff --git a/src/lwp/threadname.c b/src/lwp/threadname.c index 31e9d0497..f36b3170b 100644 --- a/src/lwp/threadname.c +++ b/src/lwp/threadname.c @@ -66,10 +66,10 @@ threadname(void) #else /* AFS_PTHREAD_ENV */ me = (PROCESS) LWP_ThreadId(); #endif /* AFS_PTHREAD_ENV */ - ptr = (char *)&MainThread; + ptr = &MainThread[0]; for (i = 0; i < nThreads; i++) { if (ThreadId[i] == me) { - ptr = (char *)&ThreadName[i]; + ptr = &ThreadName[i][0]; break; } } diff --git a/src/lwp/waitkey.c b/src/lwp/waitkey.c index d78ef88df..e31e0c525 100644 --- a/src/lwp/waitkey.c +++ b/src/lwp/waitkey.c @@ -113,7 +113,7 @@ int LWP_GetLine(char *linebuf, int len) { int cnt = 0; - char ch = '\0'; + int ch = 0; fflush(stdin); /* loop until a new line has been entered */ diff --git a/src/ptserver/ptserver.c b/src/ptserver/ptserver.c index 782924061..274265ce9 100644 --- a/src/ptserver/ptserver.c +++ b/src/ptserver/ptserver.c @@ -157,15 +157,14 @@ struct afsconf_dir *prdir; extern afs_int32 depthsg; #endif -extern afs_int32 ubik_lastYesTime; -extern afs_int32 ubik_nBuffers; - extern int afsconf_ServerAuth(); extern int afsconf_CheckAuth(); int pr_realmNameLen; char *pr_realmName; +static struct afsconf_cell info; + #include "AFS_component_version_number.c" /* check whether caller is authorized to manage RX statistics */ @@ -190,7 +189,6 @@ main(int argc, char **argv) #if 0 struct ktc_encryptionKey tkey; #endif - struct afsconf_cell info; int kerberosKeys; /* set if found some keys */ int lwps = 3; char clones[MAXHOSTSPERCELL]; diff --git a/src/rx/rx_lwp.c b/src/rx/rx_lwp.c index d0fe8f62c..f8b532e62 100644 --- a/src/rx/rx_lwp.c +++ b/src/rx/rx_lwp.c @@ -179,7 +179,7 @@ rxi_ListenerProc(fd_set * rfds, int *tnop, struct rx_call **newcallp) } rx_listenerPid = pid; if (swapNameProgram) - (*swapNameProgram) (pid, "listener", &name); + (*swapNameProgram) (pid, "listener", &name[0]); for (;;) { /* Grab a new packet only if necessary (otherwise re-use the old one) */ diff --git a/src/rx/rx_packet.h b/src/rx/rx_packet.h index 3ab94cf29..ddfd466cb 100644 --- a/src/rx/rx_packet.h +++ b/src/rx/rx_packet.h @@ -320,8 +320,8 @@ struct rx_packet { /* copy data from an RX packet */ #define rx_packetread(p, off, len, out) \ ( (off) + (len) > (p)->wirevec[1].iov_len ? \ - rx_SlowReadPacket(p, off, len, (char*)out) : \ - ((memcpy((char *)(out), (char*)((p)->wirevec[1].iov_base)+(off), len)),0)) + rx_SlowReadPacket(p, off, len, (char*)(out)) : \ + ((memcpy((char *)(out), (char*)((p)->wirevec[1].iov_base)+(off), (len))),0)) #define rx_computelen(p,l) { register int i; \ for (l=0, i=1; i < p->niovecs; i++ ) l += p->wirevec[i].iov_len; } diff --git a/src/rx/rxdebug.c b/src/rx/rxdebug.c index 6fd6b6214..a9322d8de 100644 --- a/src/rx/rxdebug.c +++ b/src/rx/rxdebug.c @@ -335,7 +335,7 @@ MainCommand(as, arock) printf("getconn call failed with code %d\n", code); break; } - if (tconn.cid == 0xffffffff) { + if (tconn.cid == (afs_int32)0xffffffff) { printf("Done.\n"); break; } diff --git a/src/rx/xdr.c b/src/rx/xdr.c index e759629b9..c8c98c6be 100644 --- a/src/rx/xdr.c +++ b/src/rx/xdr.c @@ -522,6 +522,7 @@ xdr_string(register XDR * xdrs, char **cpp, u_int maxsize) u_int size; u_int nodesize; + /* FIXME: this does not look correct: MSVC 6 computes -2 here */ if (maxsize > ((~0) >> 1) - 1) maxsize = ((~0) >> 1) - 1; diff --git a/src/rx/xdr_array.c b/src/rx/xdr_array.c index 4980dc6c5..de63f660d 100644 --- a/src/rx/xdr_array.c +++ b/src/rx/xdr_array.c @@ -86,6 +86,7 @@ xdr_array(register XDR * xdrs, caddr_t * addrp, u_int * sizep, u_int maxsize, register bool_t stat = TRUE; register u_int nodesize; + /* FIXME: this does not look correct: MSVC 6 computes -1 / elsize here */ i = ((~0) >> 1) / elsize; if (maxsize > i) maxsize = i; diff --git a/src/rxgen/rpc_main.c b/src/rxgen/rpc_main.c index b4463a54a..ae98591d5 100644 --- a/src/rxgen/rpc_main.c +++ b/src/rxgen/rpc_main.c @@ -785,7 +785,7 @@ parseargs(int argc, char *argv[], struct commandline *cmd) int i; int j; char c; - char flag[(1 << 8 * sizeof(char))]; + char flag[(1 << (8 * sizeof(char)))]; int nflags; cmdname = argv[0]; diff --git a/src/update/server.c b/src/update/server.c index 1de5292e3..3bb4b0e85 100644 --- a/src/update/server.c +++ b/src/update/server.c @@ -354,7 +354,6 @@ UPDATE_FetchInfo(call, name) struct rx_call *call; char *name; { - int fd = -1; int error = 0; struct stat status; char *reqObject; @@ -375,13 +374,9 @@ UPDATE_FetchInfo(call, name) } if ((status.st_mode & S_IFMT) != S_IFDIR) { printf(" file %s is not a directory \n", reqObject); - if (fd >= 0) - close(fd); error = -1; } - if (fd >= 0) - close(fd); if (!error) error = update_SendDirInfo(reqObject, call, &status, name); } @@ -524,7 +519,7 @@ update_SendDirInfo(name, call, status, origDir) } if (error == 0) { fd = open(dirInfoFile, O_RDONLY, 0); - if (fd) { + if (fd >= 0) { fstat(fd, &tstatus); errcode = update_SendFile(fd, call, &tstatus); if (errcode) diff --git a/src/util/get_krbrlm.c b/src/util/get_krbrlm.c index e664b4d25..0c6769a12 100644 --- a/src/util/get_krbrlm.c +++ b/src/util/get_krbrlm.c @@ -24,12 +24,12 @@ RCSID * */ #define KSUCCESS 0 -#define KFAILURE -1 +#define KFAILURE (-1) int afs_krb_get_lrealm(char *r, int n) { - FILE *cnffile, *fopen(); + FILE *cnffile/*, *fopen()*/; if (n > 1) return (KFAILURE); /* Temporary restriction */ diff --git a/src/util/regex.c b/src/util/regex.c index 5a217148f..52e450f55 100644 --- a/src/util/regex.c +++ b/src/util/regex.c @@ -139,7 +139,7 @@ re_comp(register char *sp) } else circf = 0; for (;;) { - if (ep >= &expbuf[ESIZE]) + if (ep >= &expbuf[ESIZE - 10 /* fudge factor */]) comperr(retoolong); if ((c = *sp++) == '\0') { if (bracketp != bracket) @@ -189,13 +189,13 @@ re_comp(register char *sp) *ep = ep[-1] + 1; ep++; cclcnt++; - if (ep >= &expbuf[ESIZE]) + if (ep >= &expbuf[ESIZE - 10 /* fudge factor */]) comperr(retoolong); } } *ep++ = c; cclcnt++; - if (ep >= &expbuf[ESIZE]) + if (ep >= &expbuf[ESIZE - 10 /* fudge factor */]) comperr(retoolong); } while ((c = *sp++) != ']'); lastep[1] = cclcnt; diff --git a/src/vlserver/vlclient.c b/src/vlserver/vlclient.c index 935c63e18..bfa1c4f3c 100644 --- a/src/vlserver/vlclient.c +++ b/src/vlserver/vlclient.c @@ -107,7 +107,8 @@ static char *opcode_names[VL_NUMBER_OPCODESX] = { "ListAttributesU", "LinkedListU", "RegisterAddr", - "GetAddrsU" "ListAttributesN2" + "GetAddrsU", + "ListAttributesN2" }; struct Vlent { @@ -532,6 +533,7 @@ handleit(as) ("Volumes not found in main hash tables in vldb will be fixed...\n"); memset(&updateentry, 0, sizeof(updateentry)); for (index = 0; 1; index = next_index) { + /* FIXME: n2 is never changed for some reason */ int n1 = 0, n2 = 0, n3 = 0, n4 = 0; memset(&entry, 0, sizeof(entry)); code = diff --git a/src/vol/ntops.c b/src/vol/ntops.c index c157f3e01..d828dcf72 100644 --- a/src/vol/ntops.c +++ b/src/vol/ntops.c @@ -1054,7 +1054,7 @@ nt_ListAFSFiles(char *dev, if (singleVolumeNumber) { h.ih_vid = singleVolumeNumber; - if (nt_HandleToVolDir(name, &h) < 0) + if (!nt_HandleToVolDir(name, &h)) return -1; ninodes = nt_ListAFSSubDirs(&h, writeFun, fp, judgeFun, singleVolumeNumber); -- 2.39.5