dtlogin: coverity fixes
authorPeter Howkins <flibble@users.sf.net>
Thu, 12 Apr 2018 23:54:04 +0000 (00:54 +0100)
committerPeter Howkins <flibble@users.sf.net>
Thu, 12 Apr 2018 23:54:04 +0000 (00:54 +0100)
14 files changed:
cde/programs/dtlogin/account.c
cde/programs/dtlogin/auth.c
cde/programs/dtlogin/choose.c
cde/programs/dtlogin/dm.c
cde/programs/dtlogin/dm.h
cde/programs/dtlogin/dtchooser.c
cde/programs/dtlogin/genauth.c
cde/programs/dtlogin/session.c
cde/programs/dtlogin/sysauth.c
cde/programs/dtlogin/util.c
cde/programs/dtlogin/verify.c
cde/programs/dtlogin/vgcallback.c
cde/programs/dtlogin/vgmain.c
cde/programs/dtlogin/xdmauth.c

index 828947f504b6c2d51ef1cd6f3a3567eb132653fc..c9ff601a015b79d58c43b0e73705540dec294395 100644 (file)
@@ -262,7 +262,7 @@ Account( struct display *d, char *user, char *line, pid_t pid,
 
        if (type == LOGIN_PROCESS && d->displayType.location != Local ) {
 #ifndef SVR4
-           strncpy(u->ut_host, d->name, sizeof(u->ut_host));
+           snprintf(u->ut_host, sizeof(u->ut_host), "%s", d->name);
 #endif
 #ifdef __hpux
            u->ut_addr = 0;
index 577558194504e2f09810b5bc8d43acad58b75010..4b22081be016e4905ddb3fb417a537ca227e5386 100644 (file)
@@ -1094,8 +1094,10 @@ writeLocalAuth (FILE *file, Xauth *auth, char *name)
 #endif
 #ifdef TCPCONN
     fd = socket (AF_INET, SOCK_STREAM, 0);
-    DefineSelf (fd, file, auth);
-    close (fd);
+    if(fd != -1) {
+        DefineSelf (fd, file, auth);
+        close (fd);
+    }
 #endif
 #ifdef DNETCONN
     fd = socket (AF_DECnet, SOCK_STREAM, 0);
@@ -1156,10 +1158,10 @@ SetUserAuthorization (struct display *d, struct verify_info *verify)
        home = getEnv (verify->userEnviron, "HOME");
        lockStatus = LOCK_ERROR;
        if (home) {
-           strcpy (home_name, home);
+           snprintf(home_name, sizeof(home_name), "%s", home);
            if (home[strlen(home) - 1] != '/')
-               strcat (home_name, "/");
-           strcat (home_name, ".Xauthority");
+               snprintf(home_name, sizeof(home_name), "%s/", home_name);
+           snprintf(home_name, sizeof(home_name), "%s.Xauthority", home_name);
            Debug ("XauLockAuth %s\n", home_name);
            lockStatus = XauLockAuth (home_name, 1, 2, 10);
            Debug ("Lock is %d\n", lockStatus);
@@ -1329,10 +1331,10 @@ RemoveUserAuthorization (struct display *d, struct verify_info *verify)
     if (!home)
        return;
     Debug ("RemoveUserAuthorization\n");
-    strcpy (name, home);
+    snprintf(name, sizeof(name), "%s", home);
     if (home[strlen(home) - 1] != '/')
-       strcat (name, "/");
-    strcat (name, ".Xauthority");
+        snprintf(name, sizeof(name), "%s/", name);
+    snprintf(name, sizeof(name), "%s.Xauthority", name);
     Debug ("XauLockAuth %s\n", name);
     lockStatus = XauLockAuth (name, 1, 2, 10);
     Debug ("Lock is %d\n", lockStatus);
index c600e518744c39eb7e4181ddc874909f9612dadc..e41d0bc5d46ed715c4882b25038c0056408303d7 100644 (file)
@@ -466,7 +466,7 @@ RunChooser (
             env = setEnv(env, LANGLIST,  d->langList);
 #if !defined (ENABLE_DYNAMIC_LANGLIST)
     else
-            if (languageList && strlen(languageList) > 0 )
+            if ( strlen(languageList) > 0 )
                  env = setEnv(env, LANGLIST, languageList);
 #endif /* ENABLE_DYNAMIC_LANGLIST */
     if ( d->setup)
index 6c415c2a6f3e6a7e3dc9a079bbea719ffe43484d..b90acb71749cef56e76dc68315e07c3222fed0e2 100644 (file)
@@ -874,7 +874,7 @@ StartDisplay(
 
       bkup[0] = '\0';
       if (d->authFile)
-       strcpy(bkup ,d->authFile);
+        snprintf(bkup, sizeof(bkup), "%s", d->authFile);
 
       LoadDisplayResources (d);
 
@@ -1340,7 +1340,9 @@ StorePid( void )
             * open it Read/Write.  This will be transparent to HP-UX.
             */
            pidFd = creat (pidFile, 0644);
-           close( pidFd );
+           if(pidFd != -1) {
+               close( pidFd );
+           }
            pidFd = open (pidFile, 2);
        }
        if (pidFd == -1 || !(pidFilePtr = fdopen (pidFd, "r+")))
@@ -1623,8 +1625,7 @@ GettyMessage( struct display *d, int msgnum )
 
     if (quiet) return;
 
-    strcpy(buf,"/dev/");
-    strcat(buf,d->gettyLine);
+    snprintf(buf, sizeof(buf), "/dev/%s", d->gettyLine);
     
     if ( (tf = fopen (buf, "a")) != NULL) {
        fprintf (tf, 
index 1d35f0082cb6d921c0a8f43491d2231df4d85126..252cb26002460f8446c471eff58b4421100dbc6c 100644 (file)
@@ -991,7 +991,7 @@ extern  char *  login_defaults(struct passwd *p,
 /*******************************     version.c   **************************/
 /*******************************     xdmauth.c   **************************/
 #ifdef HASXDMAUTH
-extern int XdmInitAuth( 
+extern void XdmInitAuth( 
 #if NeedWidePrototypes
                         unsigned int name_len,
 #else
index 3bb9088b433aa966015484acb76bb25ea4f2169e..e15442ab4e2a89d707d5cb0e2216e44ca91eb36c 100644 (file)
@@ -663,7 +663,7 @@ MakeDialog( DialogType dtype )
 
     int                width;
     
-    FILE       *fp, *fopen();
+    FILE       *fp = NULL, *fopen();
     char       buffer[128];
     char       *str;
 
@@ -772,7 +772,9 @@ MakeDialog( DialogType dtype )
            }       
        }
 
-       fclose(fp);
+       if(fp) {
+               fclose(fp);
+       }
        XtSetArg(argt[i], XmNmessageString,             xmstr           ); i++;
 
        w = XmCreateInformationDialog(tlev, "copyright_msg", argt, i);
index 089eb16db00a203a4fb529a19a84fcafcb8e15fb..784e9503b85d9587ba653ddae5e1293b7fe6b7a0 100644 (file)
@@ -156,10 +156,8 @@ typedef struct auth_ks_struct { auth_cblock _; } auth_wrapper_schedule[16];
 
 extern void _XdmcpWrapperToOddParity();
 
-static
-longtochars (l, c)
-    long           l;
-    unsigned char    *c;
+static void
+longtochars (long l, unsigned char *c)
 {
     c[0] = (l >> 24) & 0xff;
     c[1] = (l >> 16) & 0xff;
index 5bdb48c287cae242da4d622d1eaedc9a0a9f5e57..cf6ce6d1819c350e5e6742940bd36c94b2dfe6ce 100644 (file)
@@ -739,7 +739,7 @@ LoadAltDtsResources(struct display *d)
     if ( XrmGetResource(XresourceDB,
                    "Dtlogin*altDts",  "Dtlogin*AltDts",
                    &rmtype, &rmvalue ) ) {
-               strcpy(tempbuf,rmvalue.addr);
+               snprintf(tempbuf, sizeof(tempbuf), "%s", rmvalue.addr);
                i = atoi(tempbuf);
     }
 
@@ -767,18 +767,15 @@ LoadAltDtsResources(struct display *d)
                 Debug("\t %s.\n", strerror(errno));
            }
            else
-              strcpy(dirname[j], resources);
+              snprintf(dirname[j], sizeof(dirname[j]), "%s", resources);
        }
        else {
-            strcpy(dirname[j],resources);
+            snprintf(dirname[j], sizeof(dirname[j]), "%s", resources);
             Debug("LoadAltDtsResources- found resource dir %s\n", dirname[j]);
        }
 
-        if (resources)
-       {
-           free (resources);
-           resources = NULL;
-       }
+       free (resources);
+       resources = NULL;
     }
 
 
@@ -810,13 +807,13 @@ LoadAltDtsResources(struct display *d)
                    }
 
                     if (file_count == 0) {
-                        file_list = malloc (list_incr * sizeof(char **));
+                        file_list = malloc (list_incr * sizeof(char *));
                         num_allocated += list_incr;
                     }
                     if (file_count + 1 > num_allocated) {
                         num_allocated += list_incr;
                         file_list = realloc (file_list,
-                                             num_allocated * sizeof(char **));
+                                             num_allocated * sizeof(char *));
                     }
                     file_list[file_count] = strdup (res_file);
                     file_count++;
@@ -841,9 +838,9 @@ LoadAltDtsResources(struct display *d)
             * remove the trailing spaces 
             */
            if(strchr(rmvalue.addr,' '))
-               strcpy(tempbuf, strtok(rmvalue.addr," "));
+               snprintf(tempbuf, sizeof(tempbuf), "%s", strtok(rmvalue.addr," "));
            else
-               strcpy(tempbuf, rmvalue.addr);
+               snprintf(tempbuf, sizeof(tempbuf), "%s", rmvalue.addr);
 
            if ((strcmp(tempbuf, "True") == 0) || 
                 (strcmp(tempbuf, "TRUE") == 0))  {
@@ -2065,7 +2062,7 @@ RunGreeter( struct display *d, struct greet_info *greet,
            if ( d->langList && strlen(d->langList) > 0 )
                env = setEnv(env, LANGLIST,  d->langList);
 #if !defined (ENABLE_DYNAMIC_LANGLIST)
-           else if (languageList && strlen(languageList) > 0 )
+           else if (strlen(languageList) > 0 )
                env = setEnv(env, LANGLIST, languageList);
 #endif /* ENABLE_DYNAMIC_LANGLIST */
 
@@ -2129,7 +2126,7 @@ RunGreeter( struct display *d, struct greet_info *greet,
             * figure out path to dtgreet...
             */
 
-           strcpy(msg, progName);
+           snprintf(msg, sizeof(msg), "%s", progName);
     
            if ((p = (char *) strrchr(msg, '/')) == NULL)
                strcpy(msg,"./");
index 801138b9434c486a8d3a4f2a0b05ac00516f61a0..30f3375c4b6276091cb9bb525298e2e3483a9cb1 100644 (file)
@@ -2471,15 +2471,13 @@ Authenticate( struct display *d, char *name, char *passwd, char **msg )
      */
 
 
-    if ((p->pw_gid < 0)      || 
-       (setgid(p->pw_gid) == -1)) {
+    if (setgid(p->pw_gid) == -1) {
 
        Audit(p, " attempted to login - bad group id", 1);
        return(VF_BAD_GID);
     }
 
-    if ((p->pw_uid < 0)      || 
-       (seteuid(p->pw_uid) == -1)) {
+    if (seteuid(p->pw_uid) == -1) {
 
        Audit(p, " attempted to login - bad user id", 1);
        return(VF_BAD_UID);
index ee8a0fcdfe3f2a52f05ab71690397ee50ab08aaa..7841d5ed7e2086b35f7a8d50e063afa16f1b1e9b 100644 (file)
@@ -201,7 +201,7 @@ makeEnv( char *name, char *value )
                return 0;
        }
 
-        if (value && *value) {
+        if (*value) {
                   sprintf (result, "%s=%s", name, value);
         }
         else {
@@ -1144,11 +1144,11 @@ setLang( struct display *d, char **env , char *langptr)
       Debug("setLang():  langlist = NULL\n");
 
     if (langptr)
-      strcpy(langlist, langptr);
+      snprintf(langlist, sizeof(langlist), "%s", langptr);
     else
-      strcpy(langlist, getEnv(env, "LANGLIST"));
+      snprintf(langlist, sizeof(langlist), "%s", getEnv(env, "LANGLIST"));
 
-    if (langlist && (int) strlen(langlist) > 0) {
+    if (strlen(langlist) > 0) {
         element = strtok(langlist, DELIM);
         while(element) {
             set_def_lang = FALSE;
index a538db46260117c21ce34267919daa43accd8b76..2a695bc4b5acab9e79e0f1a36275e53e32b869e6 100644 (file)
@@ -192,8 +192,7 @@ Verify(
               }
             break;
         case NOTIFY_LAST_DT:
-           strcpy(last_sess,home);
-            strcat(last_sess,LAST_SESSION_FILE);
+            snprintf(last_sess, sizeof(last_sess), "%s%s", home, LAST_SESSION_FILE);
 
             if((lastsession = fopen(last_sess,"r")) == NULL)  {
            /* 
@@ -380,7 +379,7 @@ userEnv(
         if (d->language && strlen(d->language) > 0)
          langlist = d->language;
 #else
-        else if (languageList && strlen(languageList) > 0 )
+        else if ( strlen(languageList) > 0 )
          langlist = languageList;
 #endif /* ENABLE_DYNAMIC_LANGLIST */
 
@@ -556,7 +555,7 @@ systemEnv( struct display *d, char *user, char *home )
     else if (d->language && strlen(d->language) > 0 )
       langlist = d->language;
 #else
-    else if (languageList && strlen(languageList) > 0 )
+    else if ( strlen(languageList) > 0 )
       langlist = languageList;
 #endif /* ENABLE_DYNAMIC_LANGLIST */
  
index b0863a20e5e9206fa44cbc98e902e88138c2993b..a7a7aafe93673c25ca15d0225a5565f88d09dc57 100644 (file)
@@ -448,7 +448,7 @@ EditPasswdCB(Widget w, XtPointer client, XtPointer call_data)
 
     if (cbs->text->ptr)
     {
-        strcpy(s, cbs->text->ptr);
+        snprintf(s, sizeof(buffer) - (s - buffer), "%s", cbs->text->ptr);
        s += cbs->text->length;
     }
     else
@@ -1501,8 +1501,7 @@ RespondLangCB( Widget w, XtPointer client, XtPointer call)
        /** beginning of main.                            **/
        char buff[128];
        if (XmToggleButtonGadgetGetState(w)) {
-           strcpy(buff, "LANG="); 
-           strcat(buff, client);
+           snprintf(buff, sizeof(buff), "LANG=%s", (char *) client);
            putenv(buff);
            execv(orig_argv[0], orig_argv);
        }
index f26bcadc5358b8497e8d3c125e9ecb9658c522f9..1688110d723767affc2903168b0c73f17ca81be1 100644 (file)
@@ -960,9 +960,7 @@ char            *temp_p;
                char  *host;
 
                host = GetDisplayName();
-               strcpy(temp, host);
-               strcat(temp, " - ");
-               strcat(temp, rmvalue.addr + strlen(DISPLAYNAME));
+               snprintf(temp, sizeof(temp), "%s - %s", host, rmvalue.addr + strlen(DISPLAYNAME));
                xmstr = XmStringCreateLocalized(temp);
              }
              else {
index 70e9eba852af99bc3bdd4bb2ddf3892de04181b8..75078c897b22a2265f4a7c5877b601928fb0e027 100644 (file)
@@ -94,10 +94,8 @@ from the X Consortium.
 static char    auth_name[256];
 static int     auth_name_len;
 
-XdmPrintDataHex (s, a, l)
-    char           *s;
-    char           *a;
-    int                    l;
+void
+XdmPrintDataHex(const char *s, const char *a, int l)
 {
     int        i;
 
@@ -117,14 +115,14 @@ XdmPrintKey (s, k)
 #endif
 
 #ifdef XDMCP
-XdmPrintArray8Hex (s, a)
-    char       *s;
-    ARRAY8Ptr  a;
+void
+XdmPrintArray8Hex(const char *s, ARRAY8Ptr a)
 {
     XdmPrintDataHex (s, (char *) a->data, a->length);
 }
 #endif
 
+void
 XdmInitAuth (name_len, name)
 #if NeedWidePrototypes
     unsigned int name_len;