<html lang='en'>
<head>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
<title>
GitLab
</title>
</meta>
</head>
<style>
img {
max-width: 100%;
height: auto;
}
p.details {
font-style:italic;
color:#777
}
.footer p {
font-size:small;
color:#777
}
pre.commit-message {
white-space: pre-wrap;
}
.file-stats a {
text-decoration: none;
}
.file-stats .new-file {
color: #090;
}
.file-stats .deleted-file {
color: #B00;
}
</style>
<body>
<div class='content'>
<h3>Eric S. Raymond pushed to branch master at <a href="https://gitlab.com/NTPsec/ntpsec">NTPsec / ntpsec</a></h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696">5aa9538e</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2015-11-22T16:18:13Z</i>
</div>
<pre class='commit-message'>Attempt to fix signed-vs.-unsigned issues revealed by -Wextra.
The theme in this patch is changing variables that are semantically data
lengths from int to size_t. This cleanly resolves many sign-compare bugs.
It requires some printfs to change from %d to %zd formats.
No logic changes. Associated code has been eyeball-checked for subtractions that
might induce modular wraparound, but if a future core dump produces a bisection
that lands here that will be the thing to suspect.</pre>
</li>
</ul>
<h4>12 changed files:</h4>
<ul>
<li class='file-stats'>
<a href='#diff-0'>
include/ntp_refclock.h
</a>
</li>
<li class='file-stats'>
<a href='#diff-1'>
include/recvbuff.h
</a>
</li>
<li class='file-stats'>
<a href='#diff-2'>
ntpd/ntp_control.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-3'>
ntpd/ntp_proto.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-4'>
ntpd/ntp_refclock.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-5'>
ntpd/refclock_acts.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-6'>
ntpd/refclock_arc.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-7'>
ntpd/refclock_irig.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-8'>
ntpd/refclock_jjy.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-9'>
ntpd/refclock_parse.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-10'>
ntpd/refclock_tsyncpci.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-11'>
ntpq/ntpq.c
</a>
</li>
</ul>
<h4>Changes:</h4>
<li id='diff-0'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-0'>
<strong>
include/ntp_refclock.h
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/include/ntp_refclock.h
</span><span style="color: #000000;background-color: #ddffdd">+++ b/include/ntp_refclock.h
</span><span style="color: #aaaaaa">@@ -235,7 +235,7 @@ extern void refclock_process_offset(struct refclockproc *, l_fp,
</span> l_fp, double);
extern void refclock_report (struct peer *, int);
extern int refclock_gtlin (struct recvbuf *, char *, int, l_fp *);
<span style="color: #000000;background-color: #ffdddd">-extern int refclock_gtraw (struct recvbuf *, char *, int, l_fp *);
</span><span style="color: #000000;background-color: #ddffdd">+extern size_t refclock_gtraw (struct recvbuf *, char *, size_t, l_fp *);
</span> extern bool indicate_refclock_packet(struct refclockio *,
struct recvbuf *);
extern void process_refclock_packet(struct recvbuf *);
</code></pre>
<br>
</li>
<li id='diff-1'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-1'>
<strong>
include/recvbuff.h
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/include/recvbuff.h
</span><span style="color: #000000;background-color: #ddffdd">+++ b/include/recvbuff.h
</span><span style="color: #aaaaaa">@@ -66,7 +66,7 @@ struct recvbuf {
</span> int msg_flags; /* Flags received about the packet */
l_fp recv_time; /* time of arrival */
void (*receiver)(struct recvbuf *); /* callback */
<span style="color: #000000;background-color: #ffdddd">- u_int recv_length; /* number of octets received */
</span><span style="color: #000000;background-color: #ddffdd">+ size_t recv_length; /* number of octets received */
</span> union {
struct pkt X_recv_pkt;
uint8_t X_recv_buffer[RX_BUFF_SIZE];
</code></pre>
<br>
</li>
<li id='diff-2'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-2'>
<strong>
ntpd/ntp_control.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpd/ntp_control.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpd/ntp_control.c
</span><span style="color: #aaaaaa">@@ -1002,7 +1002,7 @@ process_control(
</span> dataend = &rpkt.u.data[CTL_MAX_DATA_LEN];
if ((rbufp->recv_length & 0x3) != 0)
<span style="color: #000000;background-color: #ffdddd">- DPRINTF(3, ("Control packet length %d unrounded\n",
</span><span style="color: #000000;background-color: #ddffdd">+ DPRINTF(3, ("Control packet length %zd unrounded\n",
</span> rbufp->recv_length));
/*
<span style="color: #aaaaaa">@@ -1027,7 +1027,7 @@ process_control(
</span> res_authenticate = true;
pkid = (void *)((char *)pkt + properlen);
res_keyid = ntohl(*pkid);
<span style="color: #000000;background-color: #ffdddd">- DPRINTF(3, ("recv_len %d, properlen %d, wants auth with keyid %08x, MAC length=%zu\n",
</span><span style="color: #000000;background-color: #ddffdd">+ DPRINTF(3, ("recv_len %zd, properlen %d, wants auth with keyid %08x, MAC length=%zu\n",
</span> rbufp->recv_length, properlen, res_keyid,
maclen));
</code></pre>
<br>
</li>
<li id='diff-3'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-3'>
<strong>
ntpd/ntp_proto.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpd/ntp_proto.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpd/ntp_proto.c
</span><span style="color: #aaaaaa">@@ -391,7 +391,7 @@ receive(
</span> uint8_t hisstratum; /* packet stratum */
u_short restrict_mask; /* restrict bits */
int has_mac; /* length of MAC field */
<span style="color: #000000;background-color: #ffdddd">- int authlen; /* offset of MAC field */
</span><span style="color: #000000;background-color: #ddffdd">+ size_t authlen; /* offset of MAC field */
</span> int is_authentic = 0; /* cryptosum ok */
int retcode = AM_NOMATCH; /* match code */
keyid_t skeyid = 0; /* key IDs */
<span style="color: #aaaaaa">@@ -671,7 +671,7 @@ receive(
</span> #ifdef DEBUG
if (debug)
printf(
<span style="color: #000000;background-color: #ffdddd">- "receive: at %ld %s<-%s mode %d len %d\n",
</span><span style="color: #000000;background-color: #ddffdd">+ "receive: at %ld %s<-%s mode %d len %zd\n",
</span> current_time, stoa(dstadr_sin),
stoa(&rbufp->recv_srcadr), hismode,
authlen);
<span style="color: #aaaaaa">@@ -682,7 +682,7 @@ receive(
</span> #ifdef DEBUG
if (debug)
printf(
<span style="color: #000000;background-color: #ffdddd">- "receive: at %ld %s<-%s mode %d keyid %08x len %d auth %d\n",
</span><span style="color: #000000;background-color: #ddffdd">+ "receive: at %ld %s<-%s mode %d keyid %08x len %zd auth %d\n",
</span> current_time, stoa(dstadr_sin),
stoa(&rbufp->recv_srcadr), hismode, skeyid,
authlen + has_mac, is_authentic);
<span style="color: #aaaaaa">@@ -778,7 +778,7 @@ receive(
</span> * purposes is zero. Note the hash is saved for
* use later in the autokey mambo.
*/
<span style="color: #000000;background-color: #ffdddd">- if (authlen > (int)LEN_PKT_NOMAC && pkeyid != 0) {
</span><span style="color: #000000;background-color: #ddffdd">+ if (authlen > LEN_PKT_NOMAC && pkeyid != 0) {
</span> session_key(&rbufp->recv_srcadr,
dstadr_sin, skeyid, 0, 2);
tkeyid = session_key(
<span style="color: #aaaaaa">@@ -812,7 +812,7 @@ receive(
</span> #ifdef DEBUG
if (debug)
printf(
<span style="color: #000000;background-color: #ffdddd">- "receive: at %ld %s<-%s mode %d keyid %08x len %d auth %d\n",
</span><span style="color: #000000;background-color: #ddffdd">+ "receive: at %ld %s<-%s mode %d keyid %08x len %zd auth %d\n",
</span> current_time, stoa(dstadr_sin),
stoa(&rbufp->recv_srcadr), hismode, skeyid,
authlen + has_mac, is_authentic);
<span style="color: #aaaaaa">@@ -1147,7 +1147,7 @@ receive(
</span> if (debug) {
printf(
"receive: at %ld refusing to mobilize passive association"
<span style="color: #000000;background-color: #ffdddd">- " with unknown peer %s mode %d keyid %08x len %d auth %d\n",
</span><span style="color: #000000;background-color: #ddffdd">+ " with unknown peer %s mode %d keyid %08x len %zd auth %d\n",
</span> current_time, stoa(&rbufp->recv_srcadr), hismode, skeyid,
authlen + has_mac, is_authentic);
}
<span style="color: #aaaaaa">@@ -3491,7 +3491,7 @@ fast_xmit(
</span> struct pkt xpkt; /* transmit packet structure */
struct pkt *rpkt; /* receive packet structure */
l_fp xmt_tx, xmt_ty;
<span style="color: #000000;background-color: #ffdddd">- int sendlen;
</span><span style="color: #000000;background-color: #ddffdd">+ size_t sendlen;
</span> #ifdef ENABLE_AUTOKEY
uint32_t temp32;
#endif
</code></pre>
<br>
</li>
<li id='diff-4'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-4'>
<strong>
ntpd/ntp_refclock.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpd/ntp_refclock.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpd/ntp_refclock.c
</span><span style="color: #aaaaaa">@@ -626,11 +626,11 @@ refclock_gtlin(
</span> *
* *tsptr receives a copy of the buffer timestamp.
*/
<span style="color: #000000;background-color: #ffdddd">-int
</span><span style="color: #000000;background-color: #ddffdd">+size_t
</span> refclock_gtraw(
struct recvbuf *rbufp, /* receive buffer pointer */
char *lineptr, /* current line pointer */
<span style="color: #000000;background-color: #ffdddd">- int bmax, /* remaining characters in line */
</span><span style="color: #000000;background-color: #ddffdd">+ size_t bmax, /* remaining characters in line */
</span> l_fp *tsptr /* pointer to timestamp returned */
)
{
<span style="color: #aaaaaa">@@ -643,7 +643,7 @@ refclock_gtraw(
</span> lineptr[bmax] = '\0';
*tsptr = rbufp->recv_time;
<span style="color: #000000;background-color: #ffdddd">- DPRINTF(2, ("refclock_gtraw: fd %d time %s timecode %d %s\n",
</span><span style="color: #000000;background-color: #ddffdd">+ DPRINTF(2, ("refclock_gtraw: fd %d time %s timecode %zd %s\n",
</span> rbufp->fd, ulfptoa(&rbufp->recv_time, 6), bmax,
lineptr));
return (bmax);
</code></pre>
<br>
</li>
<li id='diff-5'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-5'>
<strong>
ntpd/refclock_acts.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpd/refclock_acts.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpd/refclock_acts.c
</span><span style="color: #aaaaaa">@@ -317,7 +317,7 @@ acts_receive(
</span> struct peer *peer;
char tbuf[sizeof(up->buf)];
char * tptr;
<span style="color: #000000;background-color: #ffdddd">- u_int octets;
</span><span style="color: #000000;background-color: #ddffdd">+ size_t octets;
</span>
/*
* Initialize pointers and read the timecode and timestamp. Note
</code></pre>
<br>
</li>
<li id='diff-6'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-6'>
<strong>
ntpd/refclock_arc.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpd/refclock_arc.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpd/refclock_arc.c
</span><span style="color: #aaaaaa">@@ -845,7 +845,8 @@ arc_receive(
</span> struct refclockproc *pp;
struct peer *peer;
char c;
<span style="color: #000000;background-color: #ffdddd">- int i, wday, month, flags, status;
</span><span style="color: #000000;background-color: #ddffdd">+ int wday, month, flags, status;
+ size_t i;
</span> int arc_last_offset;
static int quality_average = 0;
static int quality_sum = 0;
<span style="color: #aaaaaa">@@ -913,7 +914,7 @@ arc_receive(
</span> timestamp = rbufp->recv_time;
#ifdef DEBUG
if(debug) { /* Show \r as `R', other non-printing char as `?'. */
<span style="color: #000000;background-color: #ffdddd">- printf("arc: stamp -->%c<-- (%d chars rcvd)\n",
</span><span style="color: #000000;background-color: #ddffdd">+ printf("arc: stamp -->%c<-- (%zd chars rcvd)\n",
</span> ((c == '\r') ? 'R' : (isgraph((unsigned char)c) ? c : '?')),
rbufp->recv_length);
}
<span style="color: #aaaaaa">@@ -944,7 +945,7 @@ arc_receive(
</span> #ifdef DEBUG
if(debug > 1) {
printf(
<span style="color: #000000;background-color: #ffdddd">- "arc: %s%d char(s) rcvd, the last for lastcode[%d]; -%sms offset applied.\n",
</span><span style="color: #000000;background-color: #ddffdd">+ "arc: %s%zd char(s) rcvd, the last for lastcode[%d]; -%sms offset applied.\n",
</span> ((rbufp->recv_length > 1) ? "*** " : ""),
rbufp->recv_length,
arc_last_offset,
</code></pre>
<br>
</li>
<li id='diff-7'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-7'>
<strong>
ntpd/refclock_irig.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpd/refclock_irig.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpd/refclock_irig.c
</span><span style="color: #aaaaaa">@@ -416,7 +416,7 @@ irig_receive(
</span> */
double sample; /* codec sample */
uint8_t *dpt; /* buffer pointer */
<span style="color: #000000;background-color: #ffdddd">- int bufcnt; /* buffer counter */
</span><span style="color: #000000;background-color: #ddffdd">+ size_t bufcnt; /* buffer counter */
</span> l_fp ltemp; /* l_fp temp */
peer = rbufp->recv_peer;
</code></pre>
<br>
</li>
<li id='diff-8'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-8'>
<strong>
ntpd/refclock_jjy.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpd/refclock_jjy.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpd/refclock_jjy.c
</span><span style="color: #aaaaaa">@@ -562,7 +562,7 @@ jjy_receive ( struct recvbuf *rbufp )
</span> */
if ( up->linediscipline == LDISC_RAW ) {
<span style="color: #000000;background-color: #ffdddd">- pp->lencode = refclock_gtraw ( rbufp, pp->a_lastcode, BMAX-1, &tRecvTimestamp ) ;
</span><span style="color: #000000;background-color: #ddffdd">+ pp->lencode = (int)refclock_gtraw ( rbufp, pp->a_lastcode, BMAX-1, &tRecvTimestamp ) ;
</span> /* 3rd argument can be BMAX, but the coverity scan tool claim "Memory - corruptions (OVERRUN)" */
/* "a_lastcode" is defined as "char a_lastcode[BMAX]" in the ntp_refclock.h */
/* To avoid its claim, pass the value BMAX-1. */
<span style="color: #aaaaaa">@@ -2655,7 +2655,8 @@ jjy_start_telephone ( int unit, struct peer *peer, struct jjyunit *up )
</span> {
char sLog [ 80 ], sFirstThreeDigits [ 4 ] ;
<span style="color: #000000;background-color: #ffdddd">- int i, iNumberOfDigitsOfPhoneNumber, iCommaCount, iCommaPosition ;
</span><span style="color: #000000;background-color: #ddffdd">+ int iNumberOfDigitsOfPhoneNumber, iCommaCount, iCommaPosition ;
+ size_t i;
</span> int iFirstThreeDigitsCount ;
jjy_write_clockstats( peer, JJY_CLOCKSTATS_MARK_JJY, "Refclock: Telephone JJY" ) ;
<span style="color: #aaaaaa">@@ -2774,7 +2775,7 @@ jjy_receive_telephone ( struct recvbuf *rbufp )
</span> struct refclockproc *pp ;
struct jjyunit *up ;
char *pBuf ;
<span style="color: #000000;background-color: #ffdddd">- int iLen ;
</span><span style="color: #000000;background-color: #ddffdd">+ size_t iLen ;
</span> short iPreviousModemState ;
peer = rbufp->recv_peer ;
<span style="color: #aaaaaa">@@ -3882,10 +3883,10 @@ modem_receive ( struct recvbuf *rbufp )
</span> #ifdef DEBUG
if ( debug ) {
char sResp [ 40 ] ;
<span style="color: #000000;background-color: #ffdddd">- int iCopyLen ;
</span><span style="color: #000000;background-color: #ddffdd">+ size_t iCopyLen ;
</span> iCopyLen = ( iLen <= sizeof(sResp)-1 ? iLen : sizeof(sResp)-1 ) ;
strlcpy( sResp, pBuf, sizeof(sResp) ) ;
<span style="color: #000000;background-color: #ffdddd">- printf ( "refclock_jjy.c : modem_receive : iLen=%d pBuf=[%s] iModemEvent=%d\n", iCopyLen, sResp, up->iModemEvent ) ;
</span><span style="color: #000000;background-color: #ddffdd">+ printf ( "refclock_jjy.c : modem_receive : iLen=%zd pBuf=[%s] iModemEvent=%d\n", iCopyLen, sResp, up->iModemEvent ) ;
</span> }
#endif
modem_control ( peer, pp, up ) ;
</code></pre>
<br>
</li>
<li id='diff-9'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-9'>
<strong>
ntpd/refclock_parse.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpd/refclock_parse.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpd/refclock_parse.c
</span><span style="color: #aaaaaa">@@ -1912,8 +1912,8 @@ local_receive(
</span> if (rbufp->recv_length != sizeof(parsetime_t))
{
ERR(ERR_BADIO)
<span style="color: #000000;background-color: #ffdddd">- msyslog(LOG_ERR,"PARSE receiver #%d: local_receive: bad size (got %d expected %d)",
- CLK_UNIT(parse->peer), rbufp->recv_length, (int)sizeof(parsetime_t));
</span><span style="color: #000000;background-color: #ddffdd">+ msyslog(LOG_ERR,"PARSE receiver #%d: local_receive: bad size (got %zd expected %zd)",
+ CLK_UNIT(parse->peer), rbufp->recv_length, sizeof(parsetime_t));
</span> parse_event(parse, CEVNT_BADREPLY);
return;
}
</code></pre>
<br>
</li>
<li id='diff-10'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-10'>
<strong>
ntpd/refclock_tsyncpci.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpd/refclock_tsyncpci.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpd/refclock_tsyncpci.c
</span><span style="color: #aaaaaa">@@ -554,7 +554,7 @@ static void tsync_poll(int unit, struct peer *peer)
</span> tmscl = ntohl(tmscl);
// Extract leap second info from ioctl payload and perform byte swapping
<span style="color: #000000;background-color: #ffdddd">- for (i = 0; i < (sizeof(leapSec) / 4); i++)
</span><span style="color: #000000;background-color: #ddffdd">+ for (i = 0; i < (int)(sizeof(leapSec) / 4); i++)
</span> {
for (j = 0; j < 4; j++)
{
</code></pre>
<br>
</li>
<li id='diff-11'>
<a href='https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696#diff-11'>
<strong>
ntpq/ntpq.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/ntpq/ntpq.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/ntpq/ntpq.c
</span><span style="color: #aaaaaa">@@ -450,7 +450,7 @@ ntpqmain(
</span> )
{
u_int ihost;
<span style="color: #000000;background-color: #ffdddd">- int icmd;
</span><span style="color: #000000;background-color: #ddffdd">+ size_t icmd;
</span> int msglen;
delay_time.l_ui = 0;
<span style="color: #aaaaaa">@@ -620,9 +620,10 @@ ntpqmain(
</span> getcmds();
} else {
for (ihost = 0; ihost < numhosts; ihost++) {
<span style="color: #000000;background-color: #ddffdd">+ int i;
</span> if (openhost(chosts[ihost].name, chosts[ihost].fam))
<span style="color: #000000;background-color: #ffdddd">- for (icmd = 0; icmd < numcmds; icmd++)
- docmd(ccmds[icmd]);
</span><span style="color: #000000;background-color: #ddffdd">+ for (i = 0; i < numcmds; i++)
+ docmd(ccmds[i]);
</span> }
}
#ifdef SYS_WINNT
</code></pre>
<br>
</li>
</div>
<div class='footer' style='margin-top: 10px;'>
<p>
—
<br>
<a href="https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696">View it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.com.
If you'd like to receive fewer emails, you can adjust your notification settings.
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Commit","url":"https://gitlab.com/NTPsec/ntpsec/commit/5aa9538eec5156b624271b53dcc875c1c4673696"}}</script>
</p>
</div>
</body>
</html>