static int do_save_serial(struct command *cmdtp, int argc, char *argv[]) { ulong offset = 0; ulong size = 0; if (argc >= 2) { offset = simple_strtoul(argv[1], NULL, 16); } if (argc == 3) { size = simple_strtoul(argv[2], NULL, 16); } printf ("## Ready for S-Record upload, press ENTER to proceed ...\n"); for (;;) { if (getc() == '\r') break; } if (save_serial(offset, size)) { printf("## S-Record upload aborted\n"); } else { printf("## S-Record upload complete\n"); } return 0; }
static ASN1_INTEGER *x509_load_serial(const char *CAfile, const char *serialfile, int create) { char *buf = NULL; ASN1_INTEGER *bs = NULL; BIGNUM *serial = NULL; if (serialfile == NULL) { const char *p = strrchr(CAfile, '.'); size_t len = p != NULL ? (size_t)(p - CAfile) : strlen(CAfile); buf = app_malloc(len + sizeof(POSTFIX), "serial# buffer"); memcpy(buf, CAfile, len); memcpy(buf + len, POSTFIX, sizeof(POSTFIX)); serialfile = buf; } serial = load_serial(serialfile, create, NULL); if (serial == NULL) goto end; if (!BN_add_word(serial, 1)) { BIO_printf(bio_err, "add_word failure\n"); goto end; } if (!save_serial(serialfile, NULL, serial, &bs)) goto end; end: OPENSSL_free(buf); BN_free(serial); return bs; }
static ASN1_INTEGER *x509_load_serial (char *CAfile, char *serialfile, int create) { char *buf = NULL, *p; ASN1_INTEGER *bs = NULL; BIGNUM *serial = NULL; size_t len; len = ((serialfile == NULL) ? (strlen (CAfile) + strlen (POSTFIX) + 1) : (strlen (serialfile))) + 1; buf = OPENSSL_malloc (len); if (buf == NULL) { BIO_printf (bio_err, "out of mem\n"); goto end; } if (serialfile == NULL) { BUF_strlcpy (buf, CAfile, len); for (p = buf; *p; p++) if (*p == '.') { *p = '\0'; break; } BUF_strlcat (buf, POSTFIX, len); } else BUF_strlcpy (buf, serialfile, len); serial = load_serial (buf, create, NULL); if (serial == NULL) goto end; if (!BN_add_word (serial, 1)) { BIO_printf (bio_err, "add_word failure\n"); goto end; } if (!save_serial (buf, NULL, serial, &bs)) goto end; end: if (buf) OPENSSL_free (buf); BN_free (serial); return bs; }
int do_save_serial(struct command *cmdtp, int flag, int argc, char *argv[]) { ulong offset = 0; ulong size = 0; #ifdef CFG_LOADS_BAUD_CHANGE int save_baudrate, current_baudrate; save_baudrate = current_baudrate = gd->baudrate; #endif if (argc >= 2) { offset = simple_strtoul(argv[1], NULL, 16); } #ifdef CFG_LOADS_BAUD_CHANGE if (argc >= 3) { size = simple_strtoul(argv[2], NULL, 16); } if (argc == 4) { save_baudrate = (int)simple_strtoul(argv[3], NULL, 10); /* default to current baudrate */ if (save_baudrate == 0) save_baudrate = current_baudrate; } if (save_baudrate != current_baudrate) { printf ("## Switch baudrate to %d bps and press ENTER ...\n", save_baudrate); udelay(50000); gd->baudrate = save_baudrate; serial_setbrg (); udelay(50000); for (;;) { if (getc() == '\r') break; } } #else /* ! CFG_LOADS_BAUD_CHANGE */ if (argc == 3) { size = simple_strtoul(argv[2], NULL, 16); } #endif /* CFG_LOADS_BAUD_CHANGE */ printf ("## Ready for S-Record upload, press ENTER to proceed ...\n"); for (;;) { if (getc() == '\r') break; } if(save_serial (offset, size)) { printf ("## S-Record upload aborted\n"); } else { printf ("## S-Record upload complete\n"); } #ifdef CFG_LOADS_BAUD_CHANGE if (save_baudrate != current_baudrate) { printf ("## Switch baudrate to %d bps and press ESC ...\n", (int)current_baudrate); udelay (50000); gd->baudrate = current_baudrate; serial_setbrg (); udelay (50000); for (;;) { if (getc() == 0x1B) /* ESC */ break; } } #endif return 0; }