<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.
</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/5a7ce2532cd8eb1a23722cd57e7a3bb0dd139f0d">https://github.com/macports/macports-legacy-support/commit/5a7ce2532cd8eb1a23722cd57e7a3bb0dd139f0d</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 5a7ce2532cd8eb1a23722cd57e7a3bb0dd139f0d
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Thu Mar 6 14:27:48 2025 -0800
<span style='display:block; white-space:pre;color:#404040;'> test_packet: Remove forgiveness for bad timestamp format.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Since the mismatched format bug is now corrected by the wrapper, we no
</span><span style='display:block; white-space:pre;color:#404040;'> longer need to allow it to pass the test.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'> Fails where expected without the fix.
</span><span style='display:block; white-space:pre;color:#404040;'> Passes on all platforms with the fix.
</span>---
test/test_packet.c | 85 ++----------------------------------------------------
1 file changed, 3 insertions(+), 82 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_packet.c b/test/test_packet.c
</span><span style='display:block; white-space:pre;color:#808080;'>index a74c627..543736c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/test/test_packet.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_packet.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -82,8 +82,8 @@ int __close(int) __asm("_close");
</span> typedef struct timeval timeval_t;
#define BILLION64 1000000000ULL
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #define MAX_TV_USEC 1000000
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define MAX_TV_NSEC 1000000000
</span> #define MAX_MACH_TIME (1ULL << 60) /* Arbitrary >36-year uptime limit */
#define TS_TYPES \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -116,85 +116,6 @@ static const int ts_min_darwin[] = {
</span> };
#undef TS_ONE
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Handling for mismatched timestamp formats, copied from ntpsec
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Since this particular bug is not currently fixed here, we duplicate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * the ntpsec workaround to avoid a test failure. This is just a verbatim
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * copy, and handles more issues than we'll see here.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static const union {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uint8_t c[8];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uint64_t i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} endian_test = {{1, 2, 3, 4, 5, 6, 7, 8}};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define ENDIAN_LITTLE 0x0807060504030201ULL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define IS_LITTLE_ENDIAN (endian_test.i == ENDIAN_LITTLE)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static struct timeval *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-access_cmsg_timeval(struct cmsghdr *cmsghdr, struct timeval *temp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct timeval_3232 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uint32_t tv_sec; /* Unsigned to get past 2038 */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int32_t tv_usec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } *tv3232p;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct timeval_6432 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int64_t tv_sec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int32_t tv_usec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } *tv6432p;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define SIZEOF_PACKED_TIMEVAL6432 (sizeof(int64_t) + sizeof(int32_t))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct timeval_6464 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int64_t tv_sec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uint32_t tv_usec[2]; /* Unsigned for compares */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } *tv6464p;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int datalen = CMSG_DATALEN(cmsghdr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- (void) access_cmsg_timeval;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (datalen == sizeof(struct timeval)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return (struct timeval *) CMSG_DATA(cmsghdr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch (datalen) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case sizeof(struct timeval_3232):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tv3232p = (struct timeval_3232 *) CMSG_DATA(cmsghdr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- temp->tv_sec = tv3232p->tv_sec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- temp->tv_usec = tv3232p->tv_usec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case SIZEOF_PACKED_TIMEVAL6432:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tv6432p = (struct timeval_6432 *) CMSG_DATA(cmsghdr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- temp->tv_sec = tv6432p->tv_sec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- temp->tv_usec = tv6432p->tv_usec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case sizeof(struct timeval_6464):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tv6464p = (struct timeval_6464 *) CMSG_DATA(cmsghdr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- temp->tv_sec = tv6464p->tv_sec;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (IS_LITTLE_ENDIAN) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- temp->tv_usec = tv6464p->tv_usec[0];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else if (tv6464p->tv_usec[0] == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (tv6464p->tv_usec[1] < MAX_TV_USEC) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- temp->tv_usec = tv6464p->tv_usec[1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- temp->tv_usec = tv6464p->tv_usec[0];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else if (tv6464p->tv_usec[0] < MAX_TV_USEC) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- temp->tv_usec = tv6464p->tv_usec[0];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /* FALLTHRU to default (invalid timestamp) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- memset(temp, 0, sizeof(struct timeval));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return temp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> /* Timestamp checks & conversions to uint64 */
static uint64_t
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -208,8 +129,7 @@ typedef uint64_t ts_func_t(struct cmsghdr *cmsghdr);
</span> static uint64_t
get_timeval_ts(struct cmsghdr *cmsghdr)
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- timeval_t tvtemp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- timeval_t *tvp = access_cmsg_timeval(cmsghdr, &tvtemp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ timeval_t *tvp = (struct timeval *) CMSG_DATA(cmsghdr);
</span>
if ((uint64_t) tvp->tv_usec >= MAX_TV_USEC) return 0;
return timeval2nanos(tvp);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -502,6 +422,7 @@ test_timestamp(const char *name, ts_type_t tstype, int sockopt, int scmtype,
</span> if (ts_sizes[tstype] && datalen != ts_sizes[tstype]) {
printf(" %s payload length %d != expected sizeof(%s) = %d\n",
name, datalen, tsname, ts_sizes[tstype]);
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ ret = 1;
</span> }
if (hdrlen > (int) sizeof(*cmsg)) {
xdatap = (uint32_t *) (cbuf + sizeof(*cmsg));
</pre><pre style='margin:0'>
</pre>