X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=namedev.c;h=e9b3babd566c3f451a9fd8199163458eff4233b3;hb=27c3403dd810e53f6c9b8dffe34af7798a4b52d3;hp=74d4d7646751973d1145f92368f42cedb680a7f8;hpb=e4f9c4a46de499841939c51da1a1cf6fd5321bb1;p=elogind.git diff --git a/namedev.c b/namedev.c index 74d4d7646..e9b3babd5 100644 --- a/namedev.c +++ b/namedev.c @@ -214,6 +214,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize, struct sysfs_device *sysfs_device) { char temp[NAME_SIZE]; + char temp2[NAME_SIZE]; char *tail; char *pos; char *attr; @@ -277,6 +278,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize, i = atoi(attr); if (i > 0) { foreach_strpart(udev->program_result, " \n\r", spos, slen) { + strnfieldcpy(temp2, udev->program_result + spos, slen+1); i--; if (i == 0) break; @@ -285,8 +287,8 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize, dbg("requested part of result string not found"); break; } - strnfieldcat(string, udev->program_result + spos, slen+1); - dbg("substitute part of result string '%s'", pos); + strnfieldcat(string, temp2, maxsize); + dbg("substitute part of result string '%s'", temp2); } else { strnfieldcat(string, udev->program_result, maxsize); dbg("substitute result string '%s'", udev->program_result);