Ignore:
Timestamp:
Mar 7, 2024, 1:33:54 AM (3 months ago)
Author:
Bruno Cornec
Message:

Fix build_partition_name to allocate dynamically and change proto accordingly

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3.3/mondo/src/common/libmondo-string.c

    r3858 r3859  
    3535 * @param drive The drive basename of the partition name (e.g. /dev/hda)
    3636 * @param partno The partition number (e.g. 1)
    37  * @param partition Where to put the partition name (e.g. /dev/hda1)
    38  * @return @p partition.
     37 * @return @p the partition name (e.g. /dev/hda1)
    3938 * @note If @p drive ends in a digit, then 'p' (on Linux) or 's' (on *BSD) is added before @p partno.
    4039 */
    41 char *build_partition_name(char *partition, const char *drive, int partno)
     40char *build_partition_name(const char *drive, int partno)
    4241{
    4342    char *p, *c;
    4443
    45     assert(partition != NULL);
    4644    assert_string_is_neither_NULL_nor_zerolength(drive);
    4745    assert(partno >= 0);
    4846
    49     p = strcpy(partition, drive);
     47    mr_free(partition);
     48    mr_asprintf(partition, "%s", drive);
     49    p = partition;
    5050    /* is this a devfs device path? */
    5151    c = strrchr(partition, '/');
     
    5454        /* This strcpy is safe */
    5555        strcpy(c + 1, "part");
    56         p = c + 5;
    5756    } else {
    5857        p += strlen(p);
    5958        if (isdigit(p[-1])) {
    60             *p++ =
     59            mr_strcat(partition, "%c",
    6160#ifdef BSD
    6261                's';
     
    6463                'p';
    6564#endif
     65                );
    6666        }
    6767    }
    68     sprintf(p, "%d", partno);
     68    mr_strcat(partition, "%d", partno);
    6969    return(partition);
    7070}
Note: See TracChangeset for help on using the changeset viewer.