fix incorrect parsing of names for custom csr registers

this commit fixes a regression introduced in
ba8c1eef5a.

The regression was caused by removal of these lines:

```
-                       /* Register prefix: "csr_" or "custom_" */
-                       strcpy(name, reg_type);
-                       name[strlen(reg_type)] = '_';
```

causing all CSR names with custom names to be parsed as empty strings.
This commit is contained in:
Parshintsev Anatoly 2024-11-27 21:36:25 +03:00
parent eb1ecd7d10
commit 109646c09d
1 changed files with 5 additions and 1 deletions

View File

@ -4164,12 +4164,16 @@ static int parse_reg_ranges_impl(struct list_head *ranges, char *args,
}
const char * const reg_name_in = equals + 1;
*name_buffer = calloc(1, strlen(reg_name_in) + strlen(reg_type) + 2);
const size_t reg_type_len = strlen(reg_type);
/* format is: <reg_type>_<reg_name_in>\0 */
*name_buffer = calloc(1, strlen(reg_name_in) + reg_type_len + 2);
name = *name_buffer;
if (!name) {
LOG_ERROR("Out of memory");
return ERROR_FAIL;
}
strcpy(name, reg_type);
name[reg_type_len] = '_';
unsigned int scanned_chars;
char *scan_dst = name + strlen(reg_type) + 1;