Bug#1091465: bookworm-pu: package espeak-ng/1.51+dfsg-10+deb12u2

Samuel Thibault sthibault at debian.org
Fri Dec 27 01:20:58 GMT 2024


Package: release.debian.org
Severity: normal
Tags: bookworm
X-Debbugs-Cc: espeak-ng at packages.debian.org
Control: affects -1 + src:espeak-ng
User: release.debian.org at packages.debian.org
Usertags: pu

Hello,

I have uploaded the attached changes to bookworm-proposed-updates.

[ Reason ]
This fixes an issue with the espeak-ng+mbrola speech synthesis.

[ Impact ]
Currently, when a user uses the espeak-ng+mbrola speech synthesis (which
is of way better quality than espeak-ng), all utterances see their last
letter dropped. For instance, if the screen reader tries to read
"Hello", it's actually "Hell" that is spoken.

More generally, anything given as stdin to espeak-ng gets its last byte
removed.

[ Tests ]
This was tested manually.

[ Risks ]
The code is very trivial.

[ Checklist ]
  [X] *all* changes are documented in the d/changelog
  [X] I reviewed all changes and I approve them
  [X] attach debdiff against the package in (old)stable
  [X] the issue is verified as fixed in unstable

[ Changes ]
Historically in espeak 1.48, the code reading stdin was putting all
characters being read into the p_text buffer, including the eventual
EOF. p_text[ix-1] was removing it by luck. With espeak-ng 1.49, that
spurious EOF addition was fixed, but p_text[ix-1] was still set to \0,
thus now actually removing the last byte of stdin. The changes shifts
adding \0 to after the last byte. The loop above was already making sure
that this is within p_text's allocation. This also fixes the string
length passed to the espeak_Synth function.
-------------- next part --------------
diff -Nru espeak-ng-1.51+dfsg/debian/changelog espeak-ng-1.51+dfsg/debian/changelog
--- espeak-ng-1.51+dfsg/debian/changelog	2023-12-21 01:26:02.000000000 +0100
+++ espeak-ng-1.51+dfsg/debian/changelog	2024-12-21 00:17:25.000000000 +0100
@@ -1,3 +1,9 @@
+espeak-ng (1.51+dfsg-10+deb12u2) bookworm; urgency=medium
+
+  * patches/espeak-stdin: Fix dropping last byte of stdin input.
+
+ -- Samuel Thibault <sthibault at debian.org>  Sat, 21 Dec 2024 00:17:25 +0100
+
 espeak-ng (1.51+dfsg-10+deb12u1) bookworm; urgency=medium
 
   * patches/CVE: Fix CVE-2023-49990, CVE-2023-49991, CVE-2023-49992,
diff -Nru espeak-ng-1.51+dfsg/debian/patches/espeak-stdin espeak-ng-1.51+dfsg/debian/patches/espeak-stdin
--- espeak-ng-1.51+dfsg/debian/patches/espeak-stdin	1970-01-01 01:00:00.000000000 +0100
+++ espeak-ng-1.51+dfsg/debian/patches/espeak-stdin	2024-12-21 00:17:25.000000000 +0100
@@ -0,0 +1,28 @@
+commit 33b6daf420710eca2f6b2dcdc8eb3f6d72e1d313
+Author: Samuel Thibault <samuel.thibault at ens-lyon.org>
+Date:   Sat Dec 21 00:07:12 2024 +0100
+
+    Fix dropping last byte of stdin input
+    
+    This got broken with eaa0c9aa08350ce8a1343aed4c0a87c1cc329b0e ("Fix
+    truncated fgetc return value in main(espeak-ng.c). [Coverity]") which
+    rightfully stopped adding a bogus EOF at the end of the input, which
+    this line was probably dropping just by luck.
+    
+    Fixes brailcom/speechd#978
+
+diff --git a/src/espeak-ng.c b/src/espeak-ng.c
+index ee63da70..2ea3791a 100644
+--- a/src/espeak-ng.c
++++ b/src/espeak-ng.c
+@@ -762,8 +762,8 @@ int main(int argc, char **argv)
+ 				}
+ 			}
+ 			if (ix > 0) {
+-				p_text[ix-1] = 0;
+-				espeak_Synth(p_text, ix+1, 0, POS_CHARACTER, 0, synth_flags, NULL, NULL);
++				p_text[ix] = 0;
++				espeak_Synth(p_text, ix, 0, POS_CHARACTER, 0, synth_flags, NULL, NULL);
+ 			}
+ 		}
+ 
diff -Nru espeak-ng-1.51+dfsg/debian/patches/series espeak-ng-1.51+dfsg/debian/patches/series
--- espeak-ng-1.51+dfsg/debian/patches/series	2023-12-21 01:26:02.000000000 +0100
+++ espeak-ng-1.51+dfsg/debian/patches/series	2024-12-21 00:17:25.000000000 +0100
@@ -10,3 +10,4 @@
 long-build-path
 mb-fr
 CVE
+espeak-stdin


More information about the Pkg-a11y-devel mailing list