return -EIO;
}
-static int get_device_serial_number(char **out)
+static int get_device_serial_number(char *buffer, int len)
{
int ret;
- if (info.serial_len > 0 && strlen(info.serial) == info.serial_len) {
- *out = strdup(info.serial);
- if (!out) {
- _E("Out of memory, strdup failed.");
- return -ENOMEM;
- }
- return 0;
- }
- ret = get_serialno_from_cpuinfo();
- if (ret < 0) {
- _E("Failed to find serial number.");
- return ret;
+ if (info.serial_len == 0) {
+ ret = get_serialno_from_cpuinfo();
+ if (ret < 0) {
+ _E("Failed to find serial number.");
+ return ret;
+ }
}
- *out = strdup(info.serial);
- if (!out)
- _E("Out of memory, strdup failed.");
+ strncpy(buffer, info.serial, len);
- return ret;
+ return 0;
}
static int board_init(void **data)