Path: blob/main/crypto/heimdal/appl/gssmask/common.h
34889 views
/*1* Copyright (c) 2006 Kungliga Tekniska Högskolan2* (Royal Institute of Technology, Stockholm, Sweden).3* All rights reserved.4*5* Redistribution and use in source and binary forms, with or without6* modification, are permitted provided that the following conditions7* are met:8*9* 1. Redistributions of source code must retain the above copyright10* notice, this list of conditions and the following disclaimer.11*12* 2. Redistributions in binary form must reproduce the above copyright13* notice, this list of conditions and the following disclaimer in the14* documentation and/or other materials provided with the distribution.15*16* 3. Neither the name of KTH nor the names of its contributors may be17* used to endorse or promote products derived from this software without18* specific prior written permission.19*20* THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY21* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE22* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR23* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE24* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR25* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF26* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR27* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,28* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR29* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF30* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.31*/3233/* $Id$ */3435#ifdef HAVE_CONFIG_H36#include <config.h>37#endif3839/*40* pthread support is disable because the pthread41* test have no "application pthread libflags" variable,42* when this is fixed pthread support can be enabled again.43*/44#undef ENABLE_PTHREAD_SUPPORT4546#include <sys/param.h>47#ifdef HAVE_SYS_UTSNAME_H48#include <sys/utsname.h>49#endif5051#ifdef HAVE_SYS_WAIT_H52#include <sys/wait.h>53#endif5455#include <assert.h>56#include <krb5.h>57#include <gssapi/gssapi.h>58#include <gssapi/gssapi_krb5.h>59#include <gssapi/gssapi_spnego.h>60#include <unistd.h>6162#include <roken.h>63#include <getarg.h>6465#include "protocol.h"6667krb5_error_code store_string(krb5_storage *, const char *);686970#define ret16(_client, num) \71do { \72if (krb5_ret_int16((_client)->sock, &(num)) != 0) \73errx(1, "krb5_ret_int16 " #num); \74} while(0)7576#define ret32(_client, num) \77do { \78if (krb5_ret_int32((_client)->sock, &(num)) != 0) \79errx(1, "krb5_ret_int32 " #num); \80} while(0)8182#define retdata(_client, data) \83do { \84if (krb5_ret_data((_client)->sock, &(data)) != 0) \85errx(1, "krb5_ret_data " #data); \86} while(0)8788#define retstring(_client, data) \89do { \90if (krb5_ret_string((_client)->sock, &(data)) != 0) \91errx(1, "krb5_ret_data " #data); \92} while(0)939495#define put32(_client, num) \96do { \97if (krb5_store_int32((_client)->sock, num) != 0) \98errx(1, "krb5_store_int32 " #num); \99} while(0)100101#define putdata(_client, data) \102do { \103if (krb5_store_data((_client)->sock, data) != 0) \104errx(1, "krb5_store_data " #data); \105} while(0)106107#define putstring(_client, str) \108do { \109if (store_string((_client)->sock, str) != 0) \110errx(1, "krb5_store_str " #str); \111} while(0)112113char *** permutate_all(struct getarg_strings *, size_t *);114115116