Changeset 204 for branches/samba-3.2.x/source/client
- Timestamp:
- May 20, 2009, 6:46:53 PM (16 years ago)
- Location:
- branches/samba-3.2.x/source/client
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.2.x/source/client/cifs.upcall.c
r203 r204 30 30 #include "cifs_spnego.h" 31 31 32 const char *CIFSSPNEGO_VERSION = "1. 1";32 const char *CIFSSPNEGO_VERSION = "1.2"; 33 33 static const char *prog = "cifs.upcall"; 34 34 typedef enum _secType { 35 NONE = 0, 35 36 KRB5, 36 37 MS_KRB5 … … 57 58 * ret: 0 - success, others - failure 58 59 */ 59 int handle_krb5_mech(const char *oid, const char *principal, 60 static int 61 handle_krb5_mech(const char *oid, const char *principal, 60 62 DATA_BLOB * secblob, DATA_BLOB * sess_key) 61 63 { … … 74 76 75 77 /* and wrap that in a shiny SPNEGO wrapper */ 76 *secblob = gen_negTokenInit( OID_KERBEROS5, tkt_wrapped);78 *secblob = gen_negTokenInit(oid, tkt_wrapped); 77 79 78 80 data_blob_free(&tkt_wrapped); … … 89 91 #define DKD_MUSTHAVE_SET (DKD_HAVE_HOSTNAME|DKD_HAVE_VERSION|DKD_HAVE_SEC) 90 92 91 int decode_key_description(const char *desc, int *ver, secType_t * sec, 93 static int 94 decode_key_description(const char *desc, int *ver, secType_t * sec, 92 95 char **hostname, uid_t * uid) 93 96 { … … 119 122 retval |= DKD_HAVE_SEC; 120 123 *sec = KRB5; 124 } else if (strncmp(tkn + 4, "mskrb5", 6) == 0) { 125 retval |= DKD_HAVE_SEC; 126 *sec = MS_KRB5; 121 127 } 122 128 } else if (strncmp(tkn, "uid=", 4) == 0) { … … 149 155 } 150 156 151 int cifs_resolver(const key_serial_t key, const char *key_descr) 157 static int 158 cifs_resolver(const key_serial_t key, const char *key_descr) 152 159 { 153 160 int c; … … 201 208 } 202 209 203 void210 static void 204 211 usage(void) 205 212 { … … 213 220 DATA_BLOB secblob = data_blob_null; 214 221 DATA_BLOB sess_key = data_blob_null; 215 secType_t sectype ;222 secType_t sectype = NONE; 216 223 key_serial_t key = 0; 217 224 size_t datalen; 218 225 long rc = 1; 219 uid_t uid ;220 int kernel_upcall_version ;226 uid_t uid = 0; 227 int kernel_upcall_version = 0; 221 228 int c, use_cifs_service_prefix = 0; 222 229 char *buf, *hostname = NULL; 230 const char *oid; 223 231 224 232 openlog(prog, 0, LOG_DAEMON); … … 281 289 SAFE_FREE(buf); 282 290 283 if (kernel_upcall_version !=CIFS_SPNEGO_UPCALL_VERSION) {291 if (kernel_upcall_version > CIFS_SPNEGO_UPCALL_VERSION) { 284 292 syslog(LOG_WARNING, 285 293 "incompatible kernel upcall version: 0x%x", … … 302 310 // do mech specific authorization 303 311 switch (sectype) { 312 case MS_KRB5: 304 313 case KRB5:{ 305 314 char *princ; … … 320 329 strlcpy(princ + 5, hostname, len - 5); 321 330 322 rc = handle_krb5_mech(OID_KERBEROS5, princ, 323 &secblob, &sess_key); 331 if (sectype == MS_KRB5) 332 oid = OID_KERBEROS5_OLD; 333 else 334 oid = OID_KERBEROS5; 335 336 rc = handle_krb5_mech(oid, princ, &secblob, &sess_key); 324 337 SAFE_FREE(princ); 325 338 break; … … 345 358 goto out; 346 359 } 347 keydata->version = CIFS_SPNEGO_UPCALL_VERSION;360 keydata->version = kernel_upcall_version; 348 361 keydata->flags = 0; 349 362 keydata->sesskey_len = sess_key.length; -
branches/samba-3.2.x/source/client/cifs_spnego.h
r133 r204 24 24 #define _CIFS_SPNEGO_H 25 25 26 #define CIFS_SPNEGO_UPCALL_VERSION 126 #define CIFS_SPNEGO_UPCALL_VERSION 2 27 27 28 28 /* -
branches/samba-3.2.x/source/client/client.c
r138 r204 522 522 afname = talloc_asprintf(ctx, 523 523 "%s%s%s", 524 client_get_cwd(),524 dir, 525 525 CLI_DIRSEP_STR, 526 526 finfo->name); … … 529 529 } 530 530 /* print file meta date header */ 531 d_printf( "FILENAME:%s\n", afname);531 d_printf( "FILENAME:%s\n", finfo->name); 532 532 d_printf( "MODE:%s\n", attrib_string(finfo->mode)); 533 533 d_printf( "SIZE:%.0f\n", (double)finfo->size); … … 3037 3037 case SMB_POSIX_ACL_GROUP: 3038 3038 uorg = IVAL(retbuf,SMB_POSIX_ACL_HEADER_SIZE+(i*SMB_POSIX_ACL_ENTRY_SIZE)+2); 3039 d_printf("group:%u ", uorg);3039 d_printf("group:%u:", uorg); 3040 3040 break; 3041 3041 case SMB_POSIX_ACL_MASK: … … 3074 3074 case SMB_POSIX_ACL_GROUP: 3075 3075 uorg = IVAL(retbuf,SMB_POSIX_ACL_HEADER_SIZE+((i+num_file_acls)*SMB_POSIX_ACL_ENTRY_SIZE)+2); 3076 d_printf("default:group:%u ", uorg);3076 d_printf("default:group:%u:", uorg); 3077 3077 break; 3078 3078 case SMB_POSIX_ACL_MASK: -
branches/samba-3.2.x/source/client/mount.cifs.c
r141 r204 95 95 /* like strncpy but does not 0 fill the buffer and always null 96 96 * terminates. bufsize is the size of the destination buffer */ 97 s ize_t strlcpy(char *d, const char *s, size_t bufsize)97 static size_t strlcpy(char *d, const char *s, size_t bufsize) 98 98 { 99 99 size_t len = strlen(s); … … 109 109 * terminates. bufsize is the length of the buffer, which should 110 110 * be one more than the maximum resulting string length */ 111 s ize_t strlcat(char *d, const char *s, size_t bufsize)111 static size_t strlcat(char *d, const char *s, size_t bufsize) 112 112 { 113 113 size_t len1 = strlen(d); … … 197 197 if(line_buf == NULL) { 198 198 fclose(fs); 199 return -ENOMEM;199 return ENOMEM; 200 200 } 201 201 … … 534 534 rc = open_cred_file(value); 535 535 if(rc) { 536 printf("error %d opening credential file %s\n",rc, value); 536 printf("error %d (%s) opening credential file %s\n", 537 rc, strerror(rc), value); 537 538 return 1; 538 539 }
Note:
See TracChangeset
for help on using the changeset viewer.