History

iso88591toutf8: detect undefined chars and copy as is (fixes utf8 id3v1)

Sigrid Solveig Haflínudóttir committed 2 years ago

Commit 2c7c27b1 parent 1848c042 files · +12 −0Browse files

Unified · Split

2 files
  1. 8859.c +13 −1
  2. input/noise.id3v1.mp3 +0 −0
8859.c+13−1
@@ -2,11 +2,15 @@ · 1 unmodified line
22 #include "tagspriv.h"
33
44 int
5−iso88591toutf8(uint8_t *o, int osz, const uint8_t *s, int sz)
5+iso88591toutf8(uint8_t *o0, int osz, const uint8_t *s, int sz)
66 {
7+ uint8_t *o;
78 int i;
89
10+ o = o0;
911 for(i = 0; i < sz && osz > 1 && s[i] != 0; i++){
12+ if(s[i] >= 0x7f && s[i] <= 0x9f) /* not expecting control chars */
13+ goto asis;
1014 if(s[i] >= 0xa0 && osz < 3)
1115 break;
1216
@@ -26,4 +30,12 @@ iso88591toutf8(uint8_t *o, int osz, const uint8_t *s, int sz) · 13 unmodified lines
2630
2731 *o = 0;
2832 return i;
33+
34+asis:
35+ /* FIXME - copy within UTF-8 chars boundaries */
36+ if(sz >= osz)
37+ sz = osz-1;
38+ memmove(o0, s, sz);
39+ o0[sz] = 0;
40+ return sz;
2941 }
input/noise.id3v1.mp3+0−0

Binary file not shown.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t