| 437 | */ |
| 438 | |
| 439 | int /* O - 1 on success, 0 on error */ |
| 440 | cupsdLogGSSMessage( |
| 441 | int level, /* I - Log level */ |
| 442 | OM_uint32 major_status, /* I - Major GSSAPI status */ |
| 443 | OM_uint32 minor_status, /* I - Minor GSSAPI status */ |
| 444 | const char *message, /* I - printf-style message string */ |
| 445 | ...) /* I - Additional args as needed */ |
| 446 | { |
| 447 | OM_uint32 err_major_status, /* Major status code for display */ |
| 448 | err_minor_status; /* Minor status code for display */ |
| 449 | OM_uint32 msg_ctx; /* Message context */ |
| 450 | gss_buffer_desc major_status_string = GSS_C_EMPTY_BUFFER, |
| 451 | /* Major status message */ |
| 452 | minor_status_string = GSS_C_EMPTY_BUFFER; |
| 453 | /* Minor status message */ |
| 454 | int ret; /* Return value */ |
| 455 | char buffer[8192]; /* Buffer for vsnprintf */ |
| 456 | |
| 457 | |
| 458 | if (strchr(message, '%')) |
| 459 | { |
| 460 | /* |
| 461 | * Format the message string... |
| 462 | */ |
| 463 | |
| 464 | va_list ap; /* Pointer to arguments */ |
| 465 | |
| 466 | va_start(ap, message); |
| 467 | vsnprintf(buffer, sizeof(buffer), message, ap); |
| 468 | va_end(ap); |
| 469 | |
| 470 | message = buffer; |
| 471 | } |
| 472 | |
| 473 | msg_ctx = 0; |
| 474 | err_major_status = gss_display_status(&err_minor_status, |
| 475 | major_status, |
| 476 | GSS_C_GSS_CODE, |
| 477 | GSS_C_NO_OID, |
| 478 | &msg_ctx, |
| 479 | &major_status_string); |
| 480 | |
| 481 | if (!GSS_ERROR(err_major_status)) |
| 482 | gss_display_status(&err_minor_status, minor_status, GSS_C_MECH_CODE, |
| 483 | GSS_C_NULL_OID, &msg_ctx, &minor_status_string); |
| 484 | |
| 485 | ret = cupsdLogMessage(level, "%s: %s, %s", message, |
| 486 | (char *)major_status_string.value, |
| 487 | (char *)minor_status_string.value); |
| 488 | gss_release_buffer(&err_minor_status, &major_status_string); |
| 489 | gss_release_buffer(&err_minor_status, &minor_status_string); |
| 490 | |
| 491 | return (ret); |
| 492 | } |
| 493 | #endif /* HAVE_GSSAPI */ |
| 494 | |
| 495 |
no test coverage detected