Skip to content

Commit 3bbfd6e

Browse files
committed
Merge branch 'hotfix-50.0.1'
2 parents f3b6515 + 429c9d5 commit 3bbfd6e

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,16 @@ Change Log
33

44
This file contains the release notes (the major changes) since Circle Step30 for quick access. For earlier releases please checkout the respective git tag and look into README.md. More info is attached to the release tags (git cat-file tag StepNN) and is available in the git commit log.
55

6+
Release 50.0.1
7+
--------------
8+
9+
This is a hotfix release, which fixes a serious bug in the class `CmDNSDaemon`, which also affected the class `CmDNSPublisher`. If you are using one of these classes, you should upgrade.
10+
611
The 50th Step
712
-------------
813

14+
2025-08-15
15+
916
This release comes with full (send and receive) network multicast support, including IGMPv2 support. A class `CmDNSDaemon` has been added, which determines and maintains our mDNS hostname on the local network. Name collisions with other hosts will be resolved by appending a numeric suffix to the hostname. The daemon is automatically started, when someone requests a pointer to it. This has been added to the `CmDNSPublisher` class, which works in conjunction with `CmDNSDaemon` now. The *test/mdns-publisher* uses the numeric suffix to generate an unique service name.
1017

1118
More news:

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ Circle is a C++ bare metal programming environment for the Raspberry Pi. It shou
88

99
Circle includes bigger (optional) third-party C-libraries for specific purposes in addon/ now. This is the reason why GitHub rates the project as a C-language-project. The main Circle libraries are written in C++ using classes instead. That's why it is called a C++ programming environment.
1010

11+
Release 50.0.1
12+
--------------
13+
14+
This is a hotfix release, which fixes a serious bug in the class `CmDNSDaemon`, which also affected the class `CmDNSPublisher`. If you are using one of these classes, you should upgrade.
15+
1116
The 50th Step
1217
-------------
1318

Rules.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
#
2020

21-
CIRCLEVER = 500000
21+
CIRCLEVER = 500001
2222

2323
CIRCLEHOME ?= ..
2424

lib/net/mdnsdaemon.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -400,9 +400,11 @@ int CmDNSDaemon::ParseQuery (const u8 *pBuffer, size_t nBufLen)
400400
CString Name;
401401
u8 uchLen;
402402
boolean bFirst = TRUE;
403-
while ( nBufLen--
403+
while ( nBufLen
404404
&& (uchLen = *pMsg++) != 0)
405405
{
406+
nBufLen--;
407+
406408
if ((uchLen & 0xC0) == 0xC0) // compression not allowed here
407409
{
408410
return -1;
@@ -480,9 +482,11 @@ int CmDNSDaemon::ParseResponse (const u8 *pBuffer, size_t nBufLen, CIPAddress *p
480482
CString Name;
481483
u8 uchLen;
482484
boolean bFirst = TRUE;
483-
while ( nBufLen--
485+
while ( nBufLen
484486
&& (uchLen = *pMsg++) != 0)
485487
{
488+
nBufLen--;
489+
486490
if ((uchLen & 0xC0) == 0xC0) // compression not allowed here
487491
{
488492
return -1;
@@ -520,7 +524,8 @@ int CmDNSDaemon::ParseResponse (const u8 *pBuffer, size_t nBufLen, CIPAddress *p
520524
if ( RRTrailer.nType == BE (DNS_QTYPE_A)
521525
&& ( RRTrailer.nClass
522526
& ~BE (DNS_QCLASS_CACHE_FLUSH)) == BE (DNS_QCLASS_IN)
523-
&& RRTrailer.nRDLength == BE (DNS_RDLENGTH_AIN))
527+
&& RRTrailer.nRDLength == BE (DNS_RDLENGTH_AIN)
528+
&& Name.Compare (m_HostnameWithDomain) == 0)
524529
{
525530
break;
526531
}

0 commit comments

Comments
 (0)