Verify the existence of the keytab for tcp_server, gssapi_server
appl/test/tcp_server and gssapi_server try to open the keytab file only when processing a connection. This patch verifies the existence of the keytab file on program startup, so that troubleshooting is easier. In addition it adds some comments. Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
This commit is contained in:
		 Marco Molteni
					Marco Molteni
				
			
				
					committed by
					
						 Love Hornquist Astrand
						Love Hornquist Astrand
					
				
			
			
				
	
			
			
			 Love Hornquist Astrand
						Love Hornquist Astrand
					
				
			
						parent
						
							dd267e8fc3
						
					
				
				
					commit
					e242c40746
				
			| @@ -115,12 +115,18 @@ server_setup(krb5_context *context, int argc, char **argv) | ||||
|  | ||||
|     if(argv[argc] != NULL) | ||||
| 	server_usage(1, args, num_args); | ||||
|     if (keytab_str != NULL) | ||||
| 	ret = krb5_kt_resolve (*context, keytab_str, &keytab); | ||||
|     else | ||||
| 	ret = krb5_kt_default (*context, &keytab); | ||||
|     if (keytab_str != NULL) { | ||||
|         ret = krb5_kt_resolve (*context, keytab_str, &keytab); | ||||
|         if (ret) | ||||
|             krb5_err (*context, 1, ret, "krb5_kt_resolve"); | ||||
|     } else { | ||||
|         ret = krb5_kt_default (*context, &keytab); | ||||
|         if (ret) | ||||
|             krb5_err (*context, 1, ret, "krb5_kt_default"); | ||||
|     } | ||||
|     ret = krb5_kt_have_content(*context, keytab); | ||||
|     if (ret) | ||||
| 	krb5_err (*context, 1, ret, "krb5_kt_resolve/default"); | ||||
|         krb5_err (*context, 1, ret, "krb5_kt_have_content"); | ||||
|     return port; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -31,6 +31,10 @@ | ||||
|  * SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * A sample server that uses the GSSAPI. | ||||
|  */ | ||||
|  | ||||
| #include "test_locl.h" | ||||
| #include <gssapi/gssapi.h> | ||||
| #include <gssapi/gssapi_krb5.h> | ||||
| @@ -331,13 +335,12 @@ proto (int sock, const char *service) | ||||
|     } | ||||
| } | ||||
|  | ||||
| static int | ||||
| doit (int port, const char *service) | ||||
| static void | ||||
| loop (int port, const char *service) | ||||
| { | ||||
|     int sock, sock2; | ||||
|     struct sockaddr_in my_addr; | ||||
|     int one = 1; | ||||
|     int ret; | ||||
|  | ||||
|     if (keytab_str) | ||||
| 	gsskrb5_register_acceptor_identity(keytab_str); | ||||
| @@ -366,16 +369,19 @@ doit (int port, const char *service) | ||||
|         if (sock2 < 0) | ||||
| 	    err (1, "accept"); | ||||
|  | ||||
|         ret = proto (sock2, service); | ||||
|         proto (sock2, service); | ||||
|     } | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Iterative server; process one connection at a time. | ||||
|  */ | ||||
| int | ||||
| main(int argc, char **argv) | ||||
| { | ||||
|     krb5_context context = NULL; /* XXX */ | ||||
|     int port = server_setup(&context, argc, argv); | ||||
|     return doit (port, service); | ||||
|     loop (port, service); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -31,6 +31,10 @@ | ||||
|  * SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * A sample server that uses the Kerberos V5 API. | ||||
|  */ | ||||
|  | ||||
| #include "test_locl.h" | ||||
| RCSID("$Id$"); | ||||
|  | ||||
| @@ -160,6 +164,9 @@ doit (int port, const char *service) | ||||
|     return proto (STDIN_FILENO, service); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Process only one connection and then exit. | ||||
|  */ | ||||
| int | ||||
| main(int argc, char **argv) | ||||
| { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user