Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package tinyssh for openSUSE:Factory checked 
in at 2026-06-28 21:52:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tinyssh (Old)
 and      /work/SRC/openSUSE:Factory/.tinyssh.new.11887 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "tinyssh"

Sun Jun 28 21:52:09 2026 rev:13 rq:1362234 version:20260601

Changes:
--------
--- /work/SRC/openSUSE:Factory/tinyssh/tinyssh.changes  2026-04-11 
22:31:37.401271963 +0200
+++ /work/SRC/openSUSE:Factory/.tinyssh.new.11887/tinyssh.changes       
2026-06-28 21:52:24.619291498 +0200
@@ -1,0 +2,12 @@
+Sun Jun 28 18:20:00 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 20260601:
+  * Fixed validation of client-controlled channel parameters.
+  * Fixed packet buffer bounds in plain-text and
+    chacha20-poly1305 packet handling.
+  * Fixed truncated log messages in subprocess_auth.
+  * Forced a minimal `maxpacket` value of 32 when opening
+    channels.
+  * Fixed README.md systemd variable substitution example.
+
+-------------------------------------------------------------------

Old:
----
  tinyssh-20260401.tar.gz
  tinyssh-20260401.tar.gz.asc

New:
----
  tinyssh-20260601.tar.gz
  tinyssh-20260601.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ tinyssh.spec ++++++
--- /var/tmp/diff_new_pack.keylOM/_old  2026-06-28 21:52:25.075306856 +0200
+++ /var/tmp/diff_new_pack.keylOM/_new  2026-06-28 21:52:25.075306856 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           tinyssh
-Version:        20260401
+Version:        20260601
 Release:        0
 Summary:        A minimalistic SSH server which implements only a subset of 
SSHv2 features
 License:        CC0-1.0

++++++ tinyssh-20260401.tar.gz -> tinyssh-20260601.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tinyssh-20260401/CHANGELOG.md 
new/tinyssh-20260601/CHANGELOG.md
--- old/tinyssh-20260401/CHANGELOG.md   2026-04-01 06:24:44.000000000 +0200
+++ new/tinyssh-20260601/CHANGELOG.md   2026-06-01 06:21:31.000000000 +0200
@@ -1,3 +1,10 @@
+### 20260601
+- Fixed validation of client-controlled channel parameters.
+- Fixed packet buffer bounds in plain-text and chacha20-poly1305 packet 
handling.
+- Fixed truncated log messages in subprocess_auth.
+- Forced a minimal `maxpacket` value of 32 when opening channels.
+- Fixed README.md systemd variable substitution example.
+
 ### 20260401
 - Fixed session handling, now rejects out-of-order or duplicate channel 
requests.
 - Fixed connection shutdown, timeout handling and subprocess waiting edge 
cases.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tinyssh-20260401/README.md 
new/tinyssh-20260601/README.md
--- old/tinyssh-20260401/README.md      2026-04-01 06:24:44.000000000 +0200
+++ new/tinyssh-20260601/README.md      2026-06-01 06:21:31.000000000 +0200
@@ -17,7 +17,7 @@
 * beta(updated): 2018.01.01 - ????.??.?? (ready for production use)
 * stable: expected ????.??.?? - (ready for production use - including 
post-quantum crypto)
 
-### Current release (20260401) ###
+### Current release (20260601) ###
 * has 74260 words of code
 * beta release
 
@@ -64,7 +64,7 @@
                [Service]
                ExecStartPre=-/usr/sbin/tinysshd-makekey -q 
/etc/tinyssh/sshkeydir
                EnvironmentFile=-/etc/default/tinysshd
-               ExecStart=/usr/sbin/tinysshd ${TINYSSHDOPTS} -- 
/etc/tinyssh/sshkeydir
+               ExecStart=/usr/sbin/tinysshd $TINYSSHDOPTS -- 
/etc/tinyssh/sshkeydir
                KillMode=process
                SuccessExitStatus=111
                StandardInput=socket
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tinyssh-20260401/channel.c 
new/tinyssh-20260601/channel.c
--- old/tinyssh-20260401/channel.c      2026-04-01 06:24:44.000000000 +0200
+++ new/tinyssh-20260601/channel.c      2026-06-01 06:21:31.000000000 +0200
@@ -54,8 +54,7 @@
     struct buf b = {channel.buf0, 0, CHANNEL_BUFSIZE};
 
     if (!localwindow) bug_inval();
-    if (!maxpacket) bug_inval();
-    if (!remotewindow) bug_inval();
+    if (!maxpacket) bug_proto();
     if (channel.maxpacket != 0) return 0;
     if (channel.pid != 0) return 0;
 
@@ -224,6 +223,7 @@
 
     if (!buf || len < 0) bug_inval();
     if (channel.len0 + len > CHANNEL_BUFSIZE) bug_nomem();
+    if ((crypto_uint32) len > channel.localwindow) bug_proto();
 
     byte_copy(channel.buf0 + channel.len0, len, buf);
     channel.len0 += len;
@@ -473,6 +473,10 @@
 crypto_uint32 channel_getid(void) { return channel.id; }
 crypto_uint32 channel_getlocalwindow(void) { return channel.localwindow; }
 void channel_incrementremotewindow(crypto_uint32 x) {
+    if (x > 0xffffffffUL - channel.remotewindow) bug_proto();
     channel.remotewindow += x;
 }
-void channel_incrementlocalwindow(crypto_uint32 x) { channel.localwindow += x; 
}
+void channel_incrementlocalwindow(crypto_uint32 x) {
+    if (x > 0xffffffffUL - channel.localwindow) bug();
+    channel.localwindow += x;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tinyssh-20260401/old/tinyssh-tests/channeltest.c 
new/tinyssh-20260601/old/tinyssh-tests/channeltest.c
--- old/tinyssh-20260401/old/tinyssh-tests/channeltest.c        2026-04-01 
06:24:44.000000000 +0200
+++ new/tinyssh-20260601/old/tinyssh-tests/channeltest.c        2026-06-01 
06:21:31.000000000 +0200
@@ -249,7 +249,7 @@
     run_mustpass(testopen1);
     run_mustfail(testopen2);
     run_mustfail(testopen3);
-    run_mustfail(testopen4);
+    /*run_mustfail(testopen4);*/
 
     run_mustfail(testtermopen1);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/tinyssh-20260401/old/tinyssh-tests/subprocess_authtest.c 
new/tinyssh-20260601/old/tinyssh-tests/subprocess_authtest.c
--- old/tinyssh-20260401/old/tinyssh-tests/subprocess_authtest.c        
2026-04-01 06:24:44.000000000 +0200
+++ new/tinyssh-20260601/old/tinyssh-tests/subprocess_authtest.c        
2026-06-01 06:21:31.000000000 +0200
@@ -475,16 +475,16 @@
     run(test_path_authorizedkeys_perm1, "d1/authorized_keys (access denied)");
     run(test_path_authorizedkeys_perm2, "d1/authorized_keys (access denied)");
     run(test_path_authorizedkeys_perm3, "d1/authorized_keys (access denied)");
-    run(test_path_dir_perm1, "d1/ (access denied)");
-    run(test_path_dir_perm2, "d1/ (access denied)");
-    run(test_path_dir_perm3, "d1/ (access denied)");
-    run(test_path_dir2_perm1, "d1/d2/ (access denied)");
-    run(test_path_dir2_perm2, "d1/d2/ (access denied)");
-    run(test_path_dir2_perm3, "d1/d2/ (access denied)");
-    run(test_path_dir3_perm1, "d1/ (access denied)");
-    run(test_path_dir3_perm2, "d1/ (access denied)");
-    run(test_path_dir3_perm3, "d1/ (access denied)");
-    run(test_path_dir_symlink, "d1/ (access denied)");
+    run(test_path_dir_perm1, "d1 (access denied)");
+    run(test_path_dir_perm2, "d1 (access denied)");
+    run(test_path_dir_perm3, "d1 (access denied)");
+    run(test_path_dir2_perm1, "d1/d2 (access denied)");
+    run(test_path_dir2_perm2, "d1/d2 (access denied)");
+    run(test_path_dir2_perm3, "d1/d2 (access denied)");
+    run(test_path_dir3_perm1, "d1 (access denied)");
+    run(test_path_dir3_perm2, "d1 (access denied)");
+    run(test_path_dir3_perm3, "d1 (access denied)");
+    run(test_path_dir_symlink, "d1 (access denied)");
 
     log_init(-1, "xxx", 1, 0);
     test_authorizedkeys_ne();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tinyssh-20260401/packet_channel_open.c 
new/tinyssh-20260601/packet_channel_open.c
--- old/tinyssh-20260401/packet_channel_open.c  2026-04-01 06:24:44.000000000 
+0200
+++ new/tinyssh-20260601/packet_channel_open.c  2026-06-01 06:21:31.000000000 
+0200
@@ -36,6 +36,7 @@
     pos = packetparser_uint32(b1->buf, b1->len, pos,
                               &maxpacket); /* uint32    maximum packet size */
     if (maxpacket > PACKET_LIMIT) maxpacket = PACKET_LIMIT;
+    if (maxpacket < 32) maxpacket = 32;
 
     if (str_equaln(chan, chanlen, "session")) {
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tinyssh-20260401/packet_get.c 
new/tinyssh-20260601/packet_get.c
--- old/tinyssh-20260401/packet_get.c   2026-04-01 06:24:44.000000000 +0200
+++ new/tinyssh-20260601/packet_get.c   2026-06-01 06:21:31.000000000 +0200
@@ -49,8 +49,8 @@
     if (len <= 0) bug_proto();
     buf_put(b, recvbuf->buf + PACKET_ZEROBYTES + 5, len);
 
-    byte_copy(pp, l - packet_length + 4, pp + packet_length + 4);
-    purge(pp + l - packet_length + 4, packet_length + 4);
+    byte_copy(pp, l - packet_length - 4, pp + packet_length + 4);
+    purge(pp + l - packet_length - 4, packet_length + 4);
     recvbuf->len -= packet_length + 4;
 
     packet.receivepacketid++;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tinyssh-20260401/packet_unimplemented.c 
new/tinyssh-20260601/packet_unimplemented.c
--- old/tinyssh-20260401/packet_unimplemented.c 2026-04-01 06:24:44.000000000 
+0200
+++ new/tinyssh-20260601/packet_unimplemented.c 2026-06-01 06:21:31.000000000 
+0200
@@ -15,7 +15,7 @@
 
     char strnum[NUMTOSTR_LEN];
 
-    /* note that b->buf[0] contains packetid */
+    /* note that b->buf[0] contains the SSH message type */
     log_d3("packet=", numtostr(strnum, b->buf[0]),
            ", sending SSH_MSG_UNIMPLEMENTED message");
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tinyssh-20260401/sshcrypto_cipher_chachapoly.c 
new/tinyssh-20260601/sshcrypto_cipher_chachapoly.c
--- old/tinyssh-20260401/sshcrypto_cipher_chachapoly.c  2026-04-01 
06:24:44.000000000 +0200
+++ new/tinyssh-20260601/sshcrypto_cipher_chachapoly.c  2026-06-01 
06:21:31.000000000 +0200
@@ -120,9 +120,9 @@
     pp = recvbuf->buf + PACKET_ZEROBYTES;
     l = recvbuf->len - PACKET_ZEROBYTES;
 
-    byte_copy(pp, l - packet.packet_length + AB + 4,
+    byte_copy(pp, l - packet.packet_length - AB - 4,
               pp + packet.packet_length + AB + 4);
-    purge(pp + l - packet.packet_length + AB + 4,
+    purge(pp + l - packet.packet_length - AB - 4,
           packet.packet_length + AB + 4);
     recvbuf->len -= packet.packet_length + AB + 4;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tinyssh-20260401/subprocess_auth.c 
new/tinyssh-20260601/subprocess_auth.c
--- old/tinyssh-20260401/subprocess_auth.c      2026-04-01 06:24:44.000000000 
+0200
+++ new/tinyssh-20260601/subprocess_auth.c      2026-06-01 06:21:31.000000000 
+0200
@@ -55,31 +55,37 @@
     }
     else {
         if (stat(d, &st) == -1) {
-            log_w4("auth: unable to stat directory: ", d, "/", f);
+            log_w2("auth: unable to stat directory: ", d);
             e = 1;
         }
         if (e == 0 && !S_ISDIR(st.st_mode)) {
             errno = ENOTDIR;
-            log_w4("auth: unable to stat directory: ", d, "/", f);
+            log_w2("auth: not a directory: ", d);
             e = 1;
         }
     }
     if (e == 0 && (st.st_mode & 022) != 0) {
         errno = EACCES;
-        log_w4("auth: bad mode: directory writable by group or others: ", d,
-               "/", f);
+        if (f)
+            log_w4("auth: bad mode: writable by group or others: ", d, "/",
+                   f);
+        else
+            log_w2("auth: bad mode: writable by group or others: ", d);
         e = 1;
     }
     if (e == 0 && st.st_uid != uid && st.st_uid != 0) {
         errno = EACCES;
-        log_w4("auth: bad owner: ", d, "/", f);
+        if (f) log_w4("auth: bad owner: ", d, "/", f);
+        else log_w2("auth: bad owner: ", d);
         e = 1;
     }
 
     if (e)
         *err = 1;
-    else
+    else if (f)
         log_d4("auth: path: ok: ", d, "/", f);
+    else
+        log_d2("auth: path: ok: ", d);
 }
 
 int subprocess_auth_checkpath_(char *path, long long pathlen, uid_t uid) {

Reply via email to