static void dump_rcache(const char *filename) { FILE *fp; krb5_deltat lifespan; krb5_int16 vno; char *str; krb5_int32 usec; krb5_timestamp timestamp; fp = fopen(filename, "r"); if (!fp) { fprintf(stderr, "Can't open filename: %s\n", strerror(errno)); return; } if (fread(&vno, sizeof(vno), 1, fp) != 1) return; if (fread(&lifespan, sizeof(lifespan), 1, fp) != 1) return; printf("Lifespan: %ld\n", (long) lifespan); while (1) { printf("---\n"); if (!(str = read_counted_string(fp))) return; printf("Client: %s\n", str); free(str); if (!(str = read_counted_string(fp))) return; printf("Server: %s\n", str); free(str); if (fread(&usec, sizeof(usec), 1, fp) != 1) return; printf("Microseconds: %ld\n", (long) usec); if (fread(×tamp, sizeof(timestamp), 1, fp) != 1) return; printf("Timestamp: %ld\n", (long) timestamp); } }
Xauth * XauReadAuth (FILE *auth_file) { Xauth local; Xauth *ret; if (read_short (&local.family, auth_file) == 0) return NULL; if (read_counted_string (&local.address_length, &local.address, auth_file) == 0) return NULL; if (read_counted_string (&local.number_length, &local.number, auth_file) == 0) { if (local.address) free (local.address); return NULL; } if (read_counted_string (&local.name_length, &local.name, auth_file) == 0) { if (local.address) free (local.address); if (local.number) free (local.number); return NULL; } if (read_counted_string (&local.data_length, &local.data, auth_file) == 0) { if (local.address) free (local.address); if (local.number) free (local.number); if (local.name) free (local.name); return NULL; } ret = (Xauth *) malloc (sizeof (Xauth)); if (!ret) { if (local.address) free (local.address); if (local.number) free (local.number); if (local.name) free (local.name); if (local.data) { bzero (local.data, local.data_length); free (local.data); } return NULL; } *ret = local; return ret; }