<matrixBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>84412</buildingDurationMillis><executingTimeMillis>84412</executingTimeMillis><executorUtilization>1.0</executorUtilization><queuingDurationMillis>7974</queuingDurationMillis><queuingTimeMillis>7974</queuingTimeMillis><subTaskCount>0</subTaskCount><totalDurationMillis>92386</totalDurationMillis><waitingDurationMillis>7973</waitingDurationMillis><waitingTimeMillis>7973</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>7953</buildNumber><marked><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><branch><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><name>origin/master</name></branch></marked><revision><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><branch><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>4893</buildNumber><marked><SHA1>af54579bd49100c2d837044d7336d9df8377808f</SHA1><branch><SHA1>af54579bd49100c2d837044d7336d9df8377808f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>af54579bd49100c2d837044d7336d9df8377808f</SHA1><branch><SHA1>af54579bd49100c2d837044d7336d9df8377808f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><branch><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-pcap</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-osmo-pcap/7953/artifact</artifactsUrl><changesUrl>https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-osmo-pcap/changes</changesUrl><displayUrl>https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-osmo-pcap/7953/</displayUrl><testsUrl>https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-osmo-pcap/7953/testReport</testsUrl></action><building>false</building><displayName>#7953</displayName><duration>84412</duration><estimatedDuration>94948</estimatedDuration><fullDisplayName>master-osmo-pcap #7953</fullDisplayName><id>7953</id><inProgress>false</inProgress><keepLog>false</keepLog><number>7953</number><queueId>150518</queueId><result>SUCCESS</result><timestamp>1782204008322</timestamp><url>https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-osmo-pcap/7953/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_client_core.c</affectedPath><commitId>4ac87349a66b9e0dde9b2dbbbcbcd8587c99702d</commitId><timestamp>1782202672000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>client: honor IPv4 header length in GPRS filter

The GPRS-NS/BSSGP filter assumed a fixed 20-byte IPv4 header (IP_LEN)
when locating the UDP header and payload.  When the captured packet
carries IPv4 options (ip_hl &gt; 5), udp_data/payload_data pointed into
the middle of the headers and check_gprs() parsed garbage, classifying
packets incorrectly.

Use the actual header length from ip_hl, reject malformed headers
(ip_hl &lt; 5), and re-validate that the larger headers fit within the
captured length before computing the payload.

Change-Id: Iac1fa9cc2a3c06cbe19c3e7799a0b335f2e3dda9
AI-Assisted: yes (Claude)
</comment><date>2026-06-23 08:17:52 +0000</date><id>4ac87349a66b9e0dde9b2dbbbcbcd8587c99702d</id><msg>client: honor IPv4 header length in GPRS filter</msg><path><editType>edit</editType><file>src/osmo_client_core.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_tls.c</affectedPath><commitId>0f243b7e18ae8f0532dd394e80f2bd452a80cfe0</commitId><timestamp>1782202676000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>tls: do not treat GNUTLS_E_AGAIN/INTERRUPTED as fatal on read

osmo_tls_client_bfd_cb() treated any non-positive return from
gnutls_record_recv() as a fatal error and tore down the session.  On a
non-blocking socket gnutls_record_recv() can return GNUTLS_E_AGAIN or
GNUTLS_E_INTERRUPTED (both negative but non-fatal), which would drop
an otherwise healthy TLS session.  Handle them as retryable, mirroring
the existing logic in tls_write().

Change-Id: If2f842b202dd08c07dffe3770c51cf0ce886beee
AI-Assisted: yes (Claude)
</comment><date>2026-06-23 08:17:56 +0000</date><id>0f243b7e18ae8f0532dd394e80f2bd452a80cfe0</id><msg>tls: do not treat GNUTLS_E_AGAIN/INTERRUPTED as fatal on read</msg><path><editType>edit</editType><file>src/osmo_tls.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_server_vty.c</affectedPath><commitId>cc146605e0a53030e7a4d5c4e6835876cf67984f</commitId><timestamp>1782202679000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>server: vty: validate rotate-localtime modulus against the new interval

apply_rotate_localtime() computed the maximum allowed modulus from
pcap_server-&gt;rotate_localtime.intv, the currently-stored (old) interval,
rather than the intv argument being applied.  On first configuration the
stored interval is the default 0, so the switch hit the default case and
rejected an otherwise valid command; when changing intervals the modulus
was bounds-checked against the wrong interval.  Switch on intv instead.

Change-Id: I0b367d4e255db3208b41e12adec682026b99cc18
AI-Assisted: yes (Claude)
</comment><date>2026-06-23 08:17:59 +0000</date><id>cc146605e0a53030e7a4d5c4e6835876cf67984f</id><msg>server: vty: validate rotate-localtime modulus against the new interval</msg><path><editType>edit</editType><file>src/osmo_server_vty.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_server_network.c</affectedPath><commitId>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</commitId><timestamp>1782202684000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>server: fix NULL deref of file_hdr_msg when store is disabled

When a connection has storing disabled (no store), conn-&gt;file_hdr_msg
is never populated.  The previous link-header handling skipped the
first branch (gated on conn-&gt;store) and fell through to the comparison
branch, which dereferenced the still-NULL conn-&gt;file_hdr_msg, crashing
the server on the first PKT_LINK_HDR from such a client.

Gate the whole header tracking on conn-&gt;store and simply free the
message when not storing, since osmo_pcap_conn_restart_trace() already
no-ops in that case.

Change-Id: I419e1b66d07307c3e49294984887c153cd8494c3
AI-Assisted: yes (Claude)
</comment><date>2026-06-23 08:18:04 +0000</date><id>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</id><msg>server: fix NULL deref of file_hdr_msg when store is disabled</msg><path><editType>edit</editType><file>src/osmo_server_network.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><description></description><fullName>Vadim Yanitskiy</fullName><id>fixeria</id></culprit><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-pcap" build number 7,953</shortDescription><upstreamBuild>7953</upstreamBuild><upstreamProject>master-osmo-pcap</upstreamProject><upstreamUrl>job/master-osmo-pcap/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>2</buildableDurationMillis><buildableTimeMillis>2</buildableTimeMillis><buildingDurationMillis>83663</buildingDurationMillis><executingTimeMillis>83663</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>7953</buildNumber><marked><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><branch><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><name>origin/master</name></branch></marked><revision><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><branch><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>4893</buildNumber><marked><SHA1>af54579bd49100c2d837044d7336d9df8377808f</SHA1><branch><SHA1>af54579bd49100c2d837044d7336d9df8377808f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>af54579bd49100c2d837044d7336d9df8377808f</SHA1><branch><SHA1>af54579bd49100c2d837044d7336d9df8377808f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><branch><SHA1>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-pcap</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#7953</displayName><duration>83663</duration><estimatedDuration>80556</estimatedDuration><fullDisplayName>master-osmo-pcap » a1=default,a2=default,a3=default,a4=default,osmocom-master #7953</fullDisplayName><id>7953</id><inProgress>false</inProgress><keepLog>false</keepLog><number>7953</number><queueId>150519</queueId><result>SUCCESS</result><timestamp>1782204008322</timestamp><url>https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-osmo-pcap/a1=default,a2=default,a3=default,a4=default,label=osmocom-master/7953/</url><builtOn>build4-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_client_core.c</affectedPath><commitId>4ac87349a66b9e0dde9b2dbbbcbcd8587c99702d</commitId><timestamp>1782202672000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>client: honor IPv4 header length in GPRS filter

The GPRS-NS/BSSGP filter assumed a fixed 20-byte IPv4 header (IP_LEN)
when locating the UDP header and payload.  When the captured packet
carries IPv4 options (ip_hl &gt; 5), udp_data/payload_data pointed into
the middle of the headers and check_gprs() parsed garbage, classifying
packets incorrectly.

Use the actual header length from ip_hl, reject malformed headers
(ip_hl &lt; 5), and re-validate that the larger headers fit within the
captured length before computing the payload.

Change-Id: Iac1fa9cc2a3c06cbe19c3e7799a0b335f2e3dda9
AI-Assisted: yes (Claude)
</comment><date>2026-06-23 08:17:52 +0000</date><id>4ac87349a66b9e0dde9b2dbbbcbcd8587c99702d</id><msg>client: honor IPv4 header length in GPRS filter</msg><path><editType>edit</editType><file>src/osmo_client_core.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_tls.c</affectedPath><commitId>0f243b7e18ae8f0532dd394e80f2bd452a80cfe0</commitId><timestamp>1782202676000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>tls: do not treat GNUTLS_E_AGAIN/INTERRUPTED as fatal on read

osmo_tls_client_bfd_cb() treated any non-positive return from
gnutls_record_recv() as a fatal error and tore down the session.  On a
non-blocking socket gnutls_record_recv() can return GNUTLS_E_AGAIN or
GNUTLS_E_INTERRUPTED (both negative but non-fatal), which would drop
an otherwise healthy TLS session.  Handle them as retryable, mirroring
the existing logic in tls_write().

Change-Id: If2f842b202dd08c07dffe3770c51cf0ce886beee
AI-Assisted: yes (Claude)
</comment><date>2026-06-23 08:17:56 +0000</date><id>0f243b7e18ae8f0532dd394e80f2bd452a80cfe0</id><msg>tls: do not treat GNUTLS_E_AGAIN/INTERRUPTED as fatal on read</msg><path><editType>edit</editType><file>src/osmo_tls.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_server_vty.c</affectedPath><commitId>cc146605e0a53030e7a4d5c4e6835876cf67984f</commitId><timestamp>1782202679000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>server: vty: validate rotate-localtime modulus against the new interval

apply_rotate_localtime() computed the maximum allowed modulus from
pcap_server-&gt;rotate_localtime.intv, the currently-stored (old) interval,
rather than the intv argument being applied.  On first configuration the
stored interval is the default 0, so the switch hit the default case and
rejected an otherwise valid command; when changing intervals the modulus
was bounds-checked against the wrong interval.  Switch on intv instead.

Change-Id: I0b367d4e255db3208b41e12adec682026b99cc18
AI-Assisted: yes (Claude)
</comment><date>2026-06-23 08:17:59 +0000</date><id>cc146605e0a53030e7a4d5c4e6835876cf67984f</id><msg>server: vty: validate rotate-localtime modulus against the new interval</msg><path><editType>edit</editType><file>src/osmo_server_vty.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_server_network.c</affectedPath><commitId>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</commitId><timestamp>1782202684000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>server: fix NULL deref of file_hdr_msg when store is disabled

When a connection has storing disabled (no store), conn-&gt;file_hdr_msg
is never populated.  The previous link-header handling skipped the
first branch (gated on conn-&gt;store) and fell through to the comparison
branch, which dereferenced the still-NULL conn-&gt;file_hdr_msg, crashing
the server on the first PKT_LINK_HDR from such a client.

Gate the whole header tracking on conn-&gt;store and simply free the
message when not storing, since osmo_pcap_conn_restart_trace() already
no-ops in that case.

Change-Id: I419e1b66d07307c3e49294984887c153cd8494c3
AI-Assisted: yes (Claude)
</comment><date>2026-06-23 08:18:04 +0000</date><id>bb3afc9454b00016635ea5e6dd9d9fd7f58d01ca</id><msg>server: fix NULL deref of file_hdr_msg when store is disabled</msg><path><editType>edit</editType><file>src/osmo_server_network.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run></matrixBuild>