summaryrefslogtreecommitdiffstats
path: root/driver/vms-getpwnam.c
diff options
context:
space:
mode:
Diffstat (limited to 'driver/vms-getpwnam.c')
-rw-r--r--driver/vms-getpwnam.c129
1 files changed, 0 insertions, 129 deletions
diff --git a/driver/vms-getpwnam.c b/driver/vms-getpwnam.c
deleted file mode 100644
index ec0650c..0000000
--- a/driver/vms-getpwnam.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * getpwnam(name) - retrieves a UAF entry
- *
- * Author: Patrick L. Mahan
- * Location: TGV, Inc
- * Date: 15-Nov-1991
- *
- * Purpose: Provides emulation for the UNIX getpwname routine.
- *
- * Modification History
- *
- * Date | Who | Version | Reason
- * ------------+-----------+---------------+---------------------------
- * 15-Nov-1991 | PLM | 1.0 | First Write
- */
-
-#define PASSWDROUTINES
-
-#include <stdio.h>
-#include <descrip.h>
-#include <uaidef.h>
-#include <string.h>
-#include <stdlib.h>
-#include <starlet.h>
-#include "vms-pwd.h"
-
-struct uic {
- unsigned short uid;
- unsigned short gid;
-};
-
-#define TEST(ptr, str) { if (ptr == NULL) { \
- fprintf(stderr, "getpwnam: memory allocation failure for \"%s\"\n", \
- str); \
- return ((struct passwd *)(NULL)); \
- } }
-
-struct passwd *getpwnam(name)
-char *name;
-{
- int istatus;
- int UserNameLen;
- int UserOwnerLen;
- int UserDeviceLen;
- int UserDirLen;
- static char UserName[13];
- static char UserOwner[32];
- static char UserDevice[32];
- static char UserDir[64];
- char *cptr, *sptr;
- unsigned long int UserPwd[2];
- unsigned short int UserSalt;
- unsigned long int UserEncrypt;
- struct uic UicValue;
- struct passwd *entry;
-
- struct dsc$descriptor_s VMSNAME =
- {strlen(name), DSC$K_DTYPE_T, DSC$K_CLASS_S, name};
-
- struct itmlist3 {
- unsigned short int length;
- unsigned short int item;
- unsigned long int addr;
- unsigned long int retaddr;
- } ItemList[] = {
- {12, UAI$_USERNAME, (unsigned long)&UserName, (unsigned long)&UserNameLen},
- {8, UAI$_PWD, (unsigned long)&UserPwd, 0},
- {4, UAI$_UIC, (unsigned long)&UicValue, 0},
- {32, UAI$_OWNER, (unsigned long)&UserOwner, (unsigned long)&UserOwnerLen},
- {32, UAI$_DEFDEV, (unsigned long)&UserDevice, (unsigned long)&UserDeviceLen},
- {64, UAI$_DEFDIR, (unsigned long)&UserDir, (unsigned long)&UserDirLen},
- {2, UAI$_SALT, (unsigned long)&UserSalt, 0},
- {4, UAI$_ENCRYPT, (unsigned long)&UserEncrypt, 0},
- {0, 0, 0, 0}
- };
-
- UserNameLen = 0;
- istatus = sys$getuai (0, 0, &VMSNAME, &ItemList, 0, 0, 0);
-
- if (!(istatus & 1)) {
- fprintf (stderr, "getpwnam: unable to retrieve passwd entry for %s\n",
- name);
- fprintf (stderr, "getpwnam: vms error number is 0x%x\n", istatus);
- return ((struct passwd *)NULL);
- }
-
- entry = (struct passwd *) calloc (1, sizeof(struct passwd));
- TEST(entry, "PASSWD_ENTRY");
-
- entry->pw_uid = UicValue.uid;
- entry->pw_gid = UicValue.gid;
- entry->pw_salt = UserSalt;
- entry->pw_encrypt = UserEncrypt;
-
- sptr = UserName;
- cptr = calloc (UserNameLen+1, sizeof(char));
- TEST(cptr, "USERNAME");
- strncpy (cptr, sptr, UserNameLen);
- cptr[UserNameLen] = '\0';
- entry->pw_name = cptr;
-
- cptr = calloc(8, sizeof(char));
- TEST(cptr, "PASSWORD");
- memcpy(cptr, UserPwd, 8);
- entry->pw_passwd = cptr;
-
- sptr = UserOwner; sptr++;
- cptr = calloc ((int)UserOwner[0]+1, sizeof(char));
- TEST(cptr, "FULLNAME");
- strncpy (cptr, sptr, (int)UserOwner[0]);
- cptr[(int)UserOwner[0]] = '\0';
- entry->pw_gecos = cptr;
-
- cptr = calloc ((int)UserDevice[0]+(int)UserDir[0]+1, sizeof(char));
- TEST(cptr, "HOME");
- sptr = UserDevice; sptr++;
- strncpy (cptr, sptr, (int)UserDevice[0]);
- sptr = UserDir; sptr++;
- strncat (cptr, sptr, (int)UserDir[0]);
- cptr[(int)UserDevice[0]+(int)UserDir[0]] = '\0';
- entry->pw_dir = cptr;
-
- cptr = calloc (strlen("SYS$SYSTEM:LOGINOUT.EXE")+1, sizeof(char));
- TEST(cptr,"SHELL");
- strcpy (cptr, "SYS$SYSTEM:LOGINOUT.EXE");
- entry->pw_shell = cptr;
-
- return (entry);
-}