X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=ftdi_eeprom%2Fmain.c;h=931045f8cbb978e20bd8247303a204aa9f1b8600;hp=d1ec55dc99b57b9d862b6bb6294a848227680ce1;hb=4359228aaa6840b20f4cf6b61bf156b9354a0f80;hpb=e8d329785e943218dcc2e1b0f216439cb58918c7 diff --git a/ftdi_eeprom/main.c b/ftdi_eeprom/main.c index d1ec55d..931045f 100644 --- a/ftdi_eeprom/main.c +++ b/ftdi_eeprom/main.c @@ -145,7 +145,7 @@ int main(int argc, char *argv[]) int _read = 0, _erase = 0, _flash = 0; int my_eeprom_size = 0; - unsigned char eeprom_buf[FTDI_MAX_EEPROM_SIZE]; + unsigned char *eeprom_buf = NULL; char *filename; int size_check; int i, argc_filename; @@ -264,9 +264,16 @@ int main(int argc, char *argv[]) printf("serial = \"%s\"\n", eeprom->serial); */ + eeprom_buf = malloc(my_eeprom_size); + ftdi_get_eeprom_buf(ftdi, eeprom_buf, my_eeprom_size); + + if (eeprom_buf == NULL) + { + fprintf(stderr, "Malloc failed, aborting\n"); + goto cleanup; + } if (filename != NULL && strlen(filename) > 0) { - ftdi_get_eeprom_buf(ftdi, eeprom_buf, my_eeprom_size); FILE *fp = fopen (filename, "wb"); fwrite (eeprom_buf, 1, my_eeprom_size, fp); @@ -283,16 +290,6 @@ int main(int argc, char *argv[]) eeprom_set_value(ftdi, VENDOR_ID, cfg_getint(cfg, "vendor_id")); eeprom_set_value(ftdi, PRODUCT_ID, cfg_getint(cfg, "product_id")); - // TODO: Support all chip types - char *type = cfg_getstr(cfg, "chip_type"); - if (!strcmp(type, "BM")) { - ftdi->type = TYPE_BM; - } else if (!strcmp(type, "R")) { - ftdi->type = TYPE_R; - } else { - ftdi->type = TYPE_AM; - } - eeprom_set_value(ftdi, SELF_POWERED, cfg_getbool(cfg, "self_powered")); eeprom_set_value(ftdi, REMOTE_WAKEUP, cfg_getbool(cfg, "remote_wakeup")); eeprom_set_value(ftdi, MAX_POWER, cfg_getint(cfg, "max_power")); @@ -378,6 +375,8 @@ int main(int argc, char *argv[]) } cleanup: + if (eeprom_buf) + free(eeprom_buf); if (_read > 0 || _erase > 0 || _flash > 0) { printf("FTDI close: %d\n", ftdi_usb_close(ftdi));