Changeset 1085
- Timestamp:
- 12/19/08 20:45:15 (3 years ago)
- File:
-
- 1 edited
-
trunk/src/ifd/ifd-cyberjack.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ifd/ifd-cyberjack.c
r1008 r1085 368 368 ifd_device_t * const dev = reader->device; 369 369 int ret; 370 struct cyberjack_t1_state *state; 370 int result = -1; 371 struct cyberjack_t1_state *state = NULL; 371 372 372 373 cyberjack_ifd_debug(1, 40, "called (dev = 0x%x).", reader->device); … … 380 381 state = calloc( 1, sizeof(struct cyberjack_t1_state) ); 381 382 if( state == NULL ) 382 return -1;383 goto cleanup; 383 384 384 385 state->dev = dev; … … 388 389 { 389 390 cyberjack_ct_error(80, "cyberjack: failed to activate 1"); 390 return -1;391 goto cleanup; 391 392 } 392 393 … … 394 395 if( (ret=cyberjack_recv_t1( state, 0xe2, read_buffer ))!=4 || memcmp( read_buffer, "\x2e\xe0\x00\xce", 4 )!=0 ) { 395 396 cyberjack_ct_error(80, "cyberjack: failed to activate 2: no cookie"); 396 return -1;397 goto cleanup; 397 398 } 398 399 … … 400 401 if( cyberjack_send_t1( state, "\x12\x00\x04" "\x20\x11\x00\x00", 7 ) != 7 ) { 401 402 cyberjack_ct_error(80, "cyberjack: failed to activate 5"); 402 return -1;403 goto cleanup; 403 404 } 404 405 ret = cyberjack_recv_t1( state, 0x12, read_buffer ); 405 406 if( ret < 0 ) { 406 407 cyberjack_ct_error(80, "cyberjack: failed to activate 5.1"); 407 return -1;408 goto cleanup; 408 409 } 409 410 cyberjack_ifd_debug(1, 80+ret*3, "cyberjack: t1 response is : %s", … … 411 412 if( ret < 6 ) { 412 413 cyberjack_ifd_debug(1, 80, "cyberjack: response is short 6.1"); 413 return -1;414 goto cleanup; 414 415 } 415 416 if( ret != 6 || read_buffer[3]!=0x90 || read_buffer[4]!=0 ) … … 419 420 // could neever recover from this 420 421 cyberjack_ct_error(80, "cyberjack: failed to activate: failed to reset the reader"); 421 return -1;422 goto cleanup; 422 423 } 423 424 … … 432 433 if( ret < 3 || memcmp(read_buffer, "\x2e\xe0\x00", 3 )!=0 ) { 433 434 cyberjack_ct_error(80, "cyberjack: failed to activate 7.1"); 434 return -1;435 goto cleanup; 435 436 } 436 437 437 438 reader->driver_data = state; 438 439 cyberjack_init_proto( reader, state ); 440 441 cyberjack_ifd_debug(1, 80, "cyberjack: activated OK, ns=%d", state->ns); 442 443 return 0; 439 state = NULL; 440 441 cyberjack_init_proto( reader, (struct cyberjack_t1_state *)reader->driver_data ); 442 443 cyberjack_ifd_debug(1, 80, "cyberjack: activated OK, ns=%d", 444 ((struct cyberjack_t1_state *)reader->driver_data)->ns); 445 446 result = 0; 447 448 cleanup: 449 if (state != NULL) { 450 free(state); 451 } 452 453 return result; 444 454 } 445 455
Note: See TracChangeset
for help on using the changeset viewer.
