Module Name: src Committed By: christos Date: Mon Sep 7 00:36:53 UTC 2020
Modified Files: src/external/bsd/pkg_install/dist/lib: plist.c Log Message: Avoid strict aliasing issue by using a separate buffer.. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/bsd/pkg_install/dist/lib/plist.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/bsd/pkg_install/dist/lib/plist.c diff -u src/external/bsd/pkg_install/dist/lib/plist.c:1.2 src/external/bsd/pkg_install/dist/lib/plist.c:1.3 --- src/external/bsd/pkg_install/dist/lib/plist.c:1.2 Thu Apr 20 09:18:23 2017 +++ src/external/bsd/pkg_install/dist/lib/plist.c Sun Sep 6 20:36:53 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: plist.c,v 1.2 2017/04/20 13:18:23 joerg Exp $ */ +/* $NetBSD: plist.c,v 1.3 2020/09/07 00:36:53 christos Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -7,7 +7,7 @@ #if HAVE_SYS_CDEFS_H #include <sys/cdefs.h> #endif -__RCSID("$NetBSD: plist.c,v 1.2 2017/04/20 13:18:23 joerg Exp $"); +__RCSID("$NetBSD: plist.c,v 1.3 2020/09/07 00:36:53 christos Exp $"); /* * FreeBSD install - a package for the installation and maintainance @@ -627,8 +627,10 @@ delete_package(Boolean ign_err, package_ } buf[SymlinkHeaderLen + cc] = 0x0; if (strcmp(buf, p->next->name) != 0) { - if ((cc = readlink(&buf[SymlinkHeaderLen], &buf[SymlinkHeaderLen], - sizeof(buf) - SymlinkHeaderLen)) < 0) { + char tmp2[MaxPathSize]; + + if ((cc = readlink(&buf[SymlinkHeaderLen], tmp2, + sizeof(tmp2))) < 0) { printf("symlink %s is not same as recorded value, %s: %s\n", buf, Force ? "deleting anyway" : "not deleting", tmp); if (!Force) { @@ -636,6 +638,7 @@ delete_package(Boolean ign_err, package_ goto pkgdb_cleanup; } } + memcpy(&buf[SymlinkHeaderLen], tmp2, cc); buf[SymlinkHeaderLen + cc] = 0x0; if (strcmp(buf, p->next->name) != 0) { printf("symlink %s is not same as recorded value, %s: %s\n",