Sophie

Sophie

distrib > Fedora > 14 > i386 > by-pkgid > 54f796828285a999160bc589698ad5f2 > files > 1

pam_smb-1.1.7-11.fc12.src.rpm

diff -ur pam_smb.orig/pam_read_conf.c pam_smb/pam_read_conf.c
--- pam_smb.orig/pam_read_conf.c	1998-10-24 12:45:50.000000000 -0400
+++ pam_smb/pam_read_conf.c	2004-04-27 10:40:12.000000000 -0400
@@ -7,28 +7,32 @@
 	This file is (C) Dave Airlie 1997 ( David.Airlie@ul.ie ) 
 	and is covered by the GPL provided in the COPYING FILE.
 ***********************************************************************/
-int smb_readpamconf(char *smb_server, char *smb_backup, char *smb_domain);
-
 int smb_readpamconf(char *smb_server, char *smb_backup, char *smb_domain)
 {
 	FILE *fl;
 		
-	int len;
+	int len, retval = 1;
+
 	if (!(fl=fopen(CONFFILE,"r")))
+		return retval;
+	
+	if (fgets(smb_domain, 80, fl))
 	{
-		return 1;
+		len=strlen(smb_domain);
+		smb_domain[len-1]='\0';
+		if (fgets(smb_server, 80, fl))
+		{
+			len=strlen(smb_server);
+			smb_server[len-1]='\0';
+			if (fgets(smb_backup, 80, fl))
+			{
+				len=strlen(smb_backup);
+				smb_backup[len-1]='\0';
+				retval = 0;
+			}
+		}
 	}
-	
-	fgets(smb_domain, 50, fl); 
-	len=strlen(smb_domain);
-	smb_domain[len-1]='\0';
-	fgets(smb_server, 50, fl);
-	len=strlen(smb_server);
-	smb_server[len-1]='\0';
-	fgets(smb_backup, 50, fl);
-	len=strlen(smb_backup);
-	smb_backup[len-1]='\0';
 	fclose(fl);
-	return(0);
+	return retval;
 }
 
diff -ur pam_smb.orig/pam_smb_auth.c pam_smb/pam_smb_auth.c
--- pam_smb.orig/pam_smb_auth.c	2000-09-07 04:30:10.000000000 -0400
+++ pam_smb/pam_smb_auth.c	2004-04-27 09:59:29.000000000 -0400
@@ -164,10 +164,13 @@
 	
 	if ( (retval = pam_get_user( pamh, &name, "login: ") ) != PAM_SUCCESS )
 	  return retval;
+
+        if (name == NULL || name[0] == 0)
+	  return PAM_USER_UNKNOWN;
 	
-	pam_get_item( pamh, PAM_AUTHTOK, (void*) &p );
+	retval = pam_get_item( pamh, PAM_AUTHTOK, (void*) &p );
 	
-	if ( !p ) 
+	if ( retval != PAM_SUCCESS || !p ) 
 	  {
 	    if (use_first_pass!=1) 
 	      {
@@ -184,7 +187,7 @@
 	   change 
 	 */
 	
-	pam_get_item( pamh, PAM_AUTHTOK, (void*) &p );
+	(void)pam_get_item( pamh, PAM_AUTHTOK, (void*) &p );
 	
 	strncpy(ntname, name, 30);
 	ntname[31]='\0';
diff -ur pam_smb.orig/smbval/rfcnb-error.h pam_smb/smbval/rfcnb-error.h
--- pam_smb.orig/smbval/rfcnb-error.h	1998-10-24 12:45:51.000000000 -0400
+++ pam_smb/smbval/rfcnb-error.h	2004-04-27 11:24:37.000000000 -0400
@@ -49,7 +49,7 @@
 
 /* Text strings for the error responses                                 */
 
-static char *RFCNB_Error_Strings[] = {
+static const char *RFCNB_Error_Strings[] = {
 
   "RFCNBE_OK: Routine completed successfully.",
   "RFCNBE_NoSpace: No space available for a malloc call.",
diff -ur pam_smb.orig/smbval/rfcnb-util.c pam_smb/smbval/rfcnb-util.c
--- pam_smb.orig/smbval/rfcnb-util.c	1998-10-24 12:45:53.000000000 -0400
+++ pam_smb/smbval/rfcnb-util.c	2004-04-27 11:30:38.000000000 -0400
@@ -204,7 +204,7 @@
 
 /* Free up a packet */
 
-int RFCNB_Free_Pkt(struct RFCNB_Pkt *pkt)
+void RFCNB_Free_Pkt(struct RFCNB_Pkt *pkt)
 
 { struct RFCNB_Pkt *pkt_next; char *data_ptr;
 
diff -ur pam_smb.orig/smbval/rfcnb-util.h pam_smb/smbval/rfcnb-util.h
--- pam_smb.orig/smbval/rfcnb-util.h	1998-10-24 12:45:53.000000000 -0400
+++ pam_smb/smbval/rfcnb-util.h	2004-04-27 11:31:16.000000000 -0400
@@ -33,11 +33,13 @@
 
 struct RFCNB_Pkt *RFCNB_Alloc_Pkt(int n);
 
+void RFCNB_Free_Pkt(struct RFCNB_Pkt *pkt);
+
 void RFCNB_Print_Pkt(FILE *fd, char *dirn, struct RFCNB_Pkt *pkt, int len);
 
 int RFCNB_Name_To_IP(char *host, struct in_addr *Dest_IP);
 
-int RFCNB_Close(int socket);
+int RFCNB_Close(int sock);
 
 int RFCNB_IP_Connect(struct in_addr Dest_IP, int port);
 
diff -ur pam_smb.orig/smbval/session.c pam_smb/smbval/session.c
--- pam_smb.orig/smbval/session.c	1998-10-24 12:45:53.000000000 -0400
+++ pam_smb/smbval/session.c	2004-04-27 11:27:56.000000000 -0400
@@ -25,6 +25,7 @@
 
 #include <malloc.h>
 #include <string.h>
+#include <stdlib.h>
 
 int RFCNB_errno = 0;
 int RFCNB_saved_errno = 0;
@@ -34,6 +35,7 @@
 #include <netinet/tcp.h>
 #include "rfcnb-priv.h"
 #include "rfcnb-util.h"
+#include "rfcnb-io.h"
 
 int RFCNB_Stats[RFCNB_MAX_STATS];
 
@@ -85,7 +87,7 @@
   if ((errno = RFCNB_Name_To_IP(Service_Address, &Dest_IP)) < 0) { /* Error */
 
     /* No need to modify RFCNB_errno as it was done by RFCNB_Name_To_IP */
-
+    free(con);
     return(NULL);
 
     }
@@ -105,6 +107,7 @@
       
       RFCNB_errno = RFCNBE_NoSpace;
       RFCNB_saved_errno = errno;
+      free(con);
       return(NULL);
 
     }
@@ -130,6 +133,7 @@
 
       /* No need to modify RFCNB_errno as it was done by RFCNB_IP_Connect */
 
+      free(con);
       return(NULL);
 
       }
@@ -349,7 +353,7 @@
 
 /* Pick up the last error response and return in string ...             */
 
-int RFCNB_Get_Error_Msg(int code, char *msg_buf, int len)
+void RFCNB_Get_Error_Msg(int code, char *msg_buf, int len)
 
 {
 
diff -ur pam_smb.orig/smbval/smbencrypt.c pam_smb/smbval/smbencrypt.c
--- pam_smb.orig/smbval/smbencrypt.c	1998-10-24 12:45:54.000000000 -0400
+++ pam_smb/smbval/smbencrypt.c	2004-04-27 11:19:20.000000000 -0400
@@ -23,7 +23,7 @@
 #include <string.h>
 #include <arpa/inet.h>
 #include <dirent.h>
-#include <string.h>
+#include <ctype.h>
 #include <sys/vfs.h>
 #include <netinet/in.h>
 
diff -ur pam_smb.orig/smbval/smblib.c pam_smb/smbval/smblib.c
--- pam_smb.orig/smbval/smblib.c	2003-08-14 22:54:49.000000000 -0400
+++ pam_smb/smbval/smblib.c	2004-04-27 11:20:18.000000000 -0400
@@ -26,6 +26,7 @@
 #include "../config.h"
 #include <malloc.h>
 #include <string.h>
+#include <ctype.h>
 
 int SMBlib_errno;
 int SMBlib_SMB_Error;
diff -ur pam_smb.orig/smbval/smblib.h pam_smb/smbval/smblib.h
--- pam_smb.orig/smbval/smblib.h	1998-10-24 12:45:56.000000000 -0400
+++ pam_smb/smbval/smblib.h	2004-04-27 11:48:43.000000000 -0400
@@ -89,9 +89,10 @@
 
 int SMB_Get_Last_SMB_Err();
 
-int SMB_Get_Error_Msg(int msg, char *msgbuf, int len);
+void SMB_Get_Error_Msg(int msg, char *msgbuf, int len);
 
 void *SMB_Logon_And_TCon(void *con, void *tree, char *user, char *pass,
 			 char *service, char *st);
 
 #define SMBLIB_DEFAULT_DOMAIN "anydom"
+
diff -ur pam_smb.orig/smbval/smblib-priv.h pam_smb/smbval/smblib-priv.h
--- pam_smb.orig/smbval/smblib-priv.h	1998-10-24 12:45:55.000000000 -0400
+++ pam_smb/smbval/smblib-priv.h	2004-04-27 11:52:03.000000000 -0400
@@ -493,7 +493,7 @@
 /* We must make it possible for callers to specify these ... */
 
 
-static char *SMB_Prots[] = {"PC NETWORK PROGRAM 1.0", 
+static const char *SMB_Prots[] = {"PC NETWORK PROGRAM 1.0", 
 			    "MICROSOFT NETWORKS 1.03",
 			    "MICROSOFT NETWORKS 3.0",
 			    "DOS LANMAN1.0",
diff -ur pam_smb.orig/smbval/smblib-util.c pam_smb/smbval/smblib-util.c
--- pam_smb.orig/smbval/smblib-util.c	1998-10-24 12:45:55.000000000 -0400
+++ pam_smb/smbval/smblib-util.c	2004-04-27 11:40:06.000000000 -0400
@@ -25,9 +25,12 @@
 
 #include "smblib-priv.h"
 #include <malloc.h>
+#include <string.h>
 
 #include "rfcnb.h"
 
+void RFCNB_Free_Pkt(struct RFCNB_Pkt *pkt);
+
 /* Print out an SMB pkt in all its gory detail ... */
 
 void SMB_Print_Pkt(FILE fd, RFCNB_Pkt *pkt, BOOL command, int Offset, int Len)
@@ -161,7 +164,7 @@
 /* We offered, and the index back from the server. We allow for a user      */
 /* supplied list, and assume that it is a subset of our list                */
 
-int SMB_Figure_Protocol(char *dialects[], int prot_index)
+int SMB_Figure_Protocol(const char *dialects[], int prot_index)
 
 { int i;
 
@@ -357,7 +360,10 @@
     Con_Handle -> Encrypt_Key_Len = SVAL(SMB_Hdr(pkt), SMB_negrLM_ekl_offset);
     
     p = (SMB_Hdr(pkt) + SMB_negrLM_buf_offset);
+#ifdef DEBUG
+    /* FIXME: decimal format string and variable passed is string pointer? */
     fprintf(stderr, "%d", (char *)(SMB_Hdr(pkt) + SMB_negrLM_buf_offset));
+#endif
     memcpy(Con_Handle->Encrypt_Key, p, 8);
 
     p = (SMB_Hdr(pkt) + SMB_negrLM_buf_offset + Con_Handle -> Encrypt_Key_Len);
@@ -446,7 +452,7 @@
 
   /* Figure out how much space is needed for path, password, dev ... */
 
-  if (path == NULL | password == NULL | device == NULL) {
+  if (path == NULL || password == NULL || device == NULL) {
 
 #ifdef DEBUG
     fprintf(stderr, "Bad parameter passed to SMB_TreeConnect\n");
@@ -588,8 +594,8 @@
 
   if (Con_Handle -> first_tree == NULL) {
 
-    Con_Handle -> first_tree == tree;
-    Con_Handle -> last_tree == tree;
+    Con_Handle -> first_tree = tree;
+    Con_Handle -> last_tree = tree;
 
   }
   else {
@@ -753,7 +759,7 @@
   "No such error code.",
   NULL};
 
-int SMB_Get_Error_Msg(int msg, char *msgbuf, int len)
+void SMB_Get_Error_Msg(int msg, char *msgbuf, int len)
 
 {
 
diff -ur pam_smb.orig/smbval/std-defines.h pam_smb/smbval/std-defines.h
--- pam_smb.orig/smbval/std-defines.h	1998-10-24 12:45:57.000000000 -0400
+++ pam_smb/smbval/std-defines.h	2004-04-27 11:23:49.000000000 -0400
@@ -5,7 +5,7 @@
 
    Copyright (C) 1996, Richard Sharpe
 
-/* One day we will conditionalize these on OS types ... */
+   One day we will conditionalize these on OS types ... */
 
 /*
    This program is free software; you can redistribute it and/or modify
diff -ur pam_smb.orig/smbval/std-includes.h pam_smb/smbval/std-includes.h
--- pam_smb.orig/smbval/std-includes.h	1998-10-24 12:45:57.000000000 -0400
+++ pam_smb/smbval/std-includes.h	2004-04-27 11:23:07.000000000 -0400
@@ -5,7 +5,7 @@
 
    Copyright (C) 1996, Richard Sharpe
 
-/* One day we will conditionalize these on OS types ... */
+   One day we will conditionalize these on OS types ... */
 
 /*
    This program is free software; you can redistribute it and/or modify
diff -ur pam_smb.orig/smbval/valid.c pam_smb/smbval/valid.c
--- pam_smb.orig/smbval/valid.c	1998-10-24 12:48:44.000000000 -0400
+++ pam_smb/smbval/valid.c	2004-04-27 11:21:56.000000000 -0400
@@ -8,7 +8,7 @@
 
 int Valid_User(char *USERNAME,char *PASSWORD,char *SERVER,char *BACKUP, char *DOMAIN)
 {
-  char *SMB_Prots[] = {"PC NETWORK PROGRAM 1.0",
+  const char *SMB_Prots[] = {"PC NETWORK PROGRAM 1.0",
 			    "MICROSOFT NETWORKS 1.03",
 			    "MICROSOFT NETWORKS 3.0",
 			    "LANMAN1.0",
diff -ur pam_smb.orig/support.c pam_smb/support.c
--- pam_smb.orig/support.c	1998-10-24 12:45:51.000000000 -0400
+++ pam_smb/support.c	2004-04-27 11:11:10.000000000 -0400
@@ -63,7 +63,7 @@
 #endif  /* LINUX */
 
 #include <security/pam_modules.h>
-
+#include <security/pam_misc.h>
 
 #ifndef NDEBUG
 
@@ -115,7 +115,6 @@
 			const char **argv	)
 {
 	int	retval;
-	char	*p;
 	
 	struct pam_message msg[1],*pmsg[1];
 	struct pam_response *resp;
@@ -138,21 +137,12 @@
 					free( resp );
 					return PAM_AUTH_ERR;
 		  		}
-
-			p = resp[ 0 ].resp;
-			
-			/* This could be a memory leak. If resp[0].resp 
-			   is malloc()ed, then it has to be free()ed! 
-			   	-- alex 
-			*/
-			
-		  	resp[ 0 ].resp = NULL; 		  				  
-
 	     	} 
 	else 
 		return PAM_CONV_ERR;
 
-	free( resp );
-	pam_set_item( pamh, PAM_AUTHTOK, p );
-	return PAM_SUCCESS;
+	retval =  pam_set_item( pamh, PAM_AUTHTOK, resp[ 0 ].resp );
+	_pam_drop_reply(resp, 1);
+	
+	return retval;
 }