Torrents wrecked by inconsistent handling of "unsafe" characters #353
Open
opened 2025-04-21 15:07:49 -04:00 by idk
·
2 comments
No Branch/Tag Specified
master
i2p-2.9.0-1
i2p-2.9.0
i2p-2.8.2-10-rc
i2p-2.8.2-9-rc
i2p-2.8.2-8
i2p-2.8.2-7
i2p-2.8.2-6
i2p-2.8.2-5
i2p-2.8.2-4
i2p-2.8.2-3
i2p-2.8.2-2
i2p-2.8.2-1
i2p-2.8.2
i2p-2.8.1-2-rc
2.8.1-2-rc
i2p-2.8.1-1-rc
i2p-release-2.8.1
i2p-2.8.0-8-rc
i2p-2.8.0-7-rc
i2p-2.8.0-6-rc
i2p-2.8.0-5
i2p-2.8.0-4
i2p-2.8.0-3
i2p-2.8.0-2
i2p-windows-2.8.0
i2p-2.8.0-1
i2p-2.8.1
i2p-2.8.0
i2p-2.7.0-9-rc
i2p-2.7.0-8-rc
i2p-2.7.0-7-rc
i2p-2.7.0-6-rc
i2p-2.7.0-5-rc
i2p-2.7.0-4
i2p-2.7.0-3
i2p-2.7.0-2
i2p-2.7.0-1
i2p-2.7.0
i2p-2.6.1-4-rc
i2p-2.6.1-3
i2p-2.6.1-2
i2p-2.6.1-1
i2p-2.6.1
i2p-2.6.0-2-rc
i2p-2.6.0-1
i2p-2.6.1-cssfix
i2p-2.6.0
i2p-2.5.2-8-rc
i2p-2.5.2-7-rc
i2p-2.5.2-6
i2p-2.5.2-0
i2p-2.5.2-5
i2p-2.5.2-4
i2p-2.5.2-3
i2p-2.5.2-2
i2p-2.5.2-1
i2p-2.5.2
i2p-2.5.1-2-rc
i2p-2.5.1-1
i2p-2.5.1
i2p-2.5.1-0
i2p-2.5.0-4
i2p-2.5.0-3
i2p-2.5.0-2
i2p-2.5.0-1
i2p-2.5.0
i2p-2.5.0-0
i2p-2.4.0-10rc
i2p-2.4.0-4
i2p-2.4.03
i2p-2.4.0
i2p-2.3.0-14--rc
i2p-2.3.0--rc
i2p-2.3.0-14-rc
i2p-2.3.0-13
i2p-2.3.0-12
i2p-2.3.0
i2p-2.2.1
i2p-maven-2.2.0
i2p-2.2.0
i2p-2.1.0
i2p-2.0.0
i2p-jpackage-1.9.4
i2p-jpackage-1.9.1
i2p-android-1.9.0
i2p-1.9.0
i2p-android-1.8.2
i2p-android-1.8.1
i2p-1.8.0
i2p-jpackage-1.7.1
i2p-1.7.0
i2p-jpackage-1.6.1
i2p-1.6.1
i2p-1.6.0
i2p-jpackage-1.5.1
i2p-1.5.0
i2p-0.9.50
i2p-0.9.49
i2p-0.9.48
i2p-0.9.47
i2p-0.9.46
i2p-0.9.45
i2p-0.9.44
i2p-0.9.43
i2p-0.9.42
i2p-0.9.41
i2p-0.9.40
i2p-0.9.39
i2p-0.9.38
i2p-0.9.37
i2p-0.9.36
i2p-0.9.35
i2p-0.9.34
i2p-0.9.33
i2p-0.9.32
i2p-0.9.31
i2p-0.9.30
i2p-0.9.29-win1
i2p-0.9.29
i2p-0.9.28
i2p-0.9.27
i2p-0.9.26
i2p-0.9.25
i2p-0.9.24
i2p-0.9.23
i2p-0.9.22
i2p-0.9.21
i2p-0.9.20
i2p-0.9.19
i2p-0.9.18
i2p-0.9.17
i2p-0.9.16
i2p-0.9.15
i2p-0.9.14.1
i2p-0.9.14
i2p-0.9.13
i2p-0.9.12
i2p-0.9.11
i2p-0.9.10
i2p-0.9.9
i2p-0.9.8.1
i2p-0.9.8
i2p-0.9.7.1
i2p-0.9.7
i2p-0.9.6
i2p-0.9.5-win1
i2p-0.9.5
i2p-0.9.4
i2p-0.9.3
i2p-0.9.2
i2p-0.9.1
i2p-0.9
i2p-0.8.13
i2p-0.8.12
i2p-0.8.11
i2p-0.8.10
i2p-0.8.9
i2p-0.8.8
i2p-0.8.7
i2p-0.8.6
i2p-0.8.5
i2p-0.8.4
i2p-0.8.3
i2p-0.8.2
i2p-0.8.1
i2p-0.8
i2p-0.7.14
i2p-0.7.13
i2p-0.7.12
i2p-0.7.11
i2p-0.7.10
i2p-0.7.9
i2p-0.7.8
i2p-0.7.7
i2p-0.7.6
i2p-0.7.5
i2p-0.7.4
i2p-0.7.3
i2p-0.7.2
i2p-0.7.1
i2p-0.7
i2p-0.6.5
i2p-0.6.4
i2p-0.6.3
i2p-0.6.2
i2p-0.6.1.33
i2p-0.6.1.32
i2p-0.6.1.31
0.6.1.30-20
0.6.1.30-20-cvs-suck-import
i2p_0_6_1_30
i2p_0_6_1_29
i2p_0_6_1_28
i2p_0_6_1_27
i2p_0_6_1_26
i2p_0_6_1_25
i2p_0_6_1_24
i2p_0_6_1_23
i2p_0_6_1_22
i2p_0_6_1_21
i2p_0_6_1_20
i2p_0_6_1_19
i2p_0_6_1_18
i2p_0_6_1_17
i2p_0_6_1_16
i2p_0_6_1_15
i2p_0_6_1_14
i2p_0_6_1_13
i2p_0_6_1_12
i2p_0_6_1_11
i2p_0_6_1_10
i2p_0_6_1_9
i2p_0_6_1_8
i2p_0_6_1_7
i2p_0_6_1_6
i2p_0_6_1_5
i2p_0_6_1_4
i2p_0_6_1_3
i2p_0_6_1_2
i2p_0_6_1_1
i2p_0_6_1
i2p_0_6_0_6
i2p_0_6_0_5
i2p_0_6_0_4
i2p_0_6_0_3
i2p_0_6_0_2
i2p_0_6_0_1
i2p_0_6
i2p_0_5_0_7
i2p_0_5_0_6
i2p_0_5_0_5
i2p_0_5_0_4
i2p_0_5_0_3
i2p_0_5_0_2
i2p_0_5_0_1
i2p_0_5
i2p_0_5_post_merge
i2p_0_4_2_6
i2p_0_4_2_5
i2p_0_4_2_4
i2p_0_4_2_3
i2p_0_4_2_2
i2p_0_4_2_1
i2p_0_4_2
i2p_0_4_1_4
i2p_0_4_1_3
i2p_0_4_1_2
i2p_0_4_1_1
i2p_0_4_1
i2p_0_4_0_1
i2p_0_4
i2p_0_3_4_3
i2p_0_3_4_2
i2p_0_3_4_1
i2p_0_3_4
i2p_0_3_3
i2p_0_3_2_3
i2p_0_3_2_2
i2p_0_3_2_1
i2p_0_3_2
i2p_0_3_1_5
i2p_0_3_1_4
i2p_0_3_1_3
i2p_0_3_1_2
i2p_0_3_1_1
i2p_0_3_1
i2p_0_3_0_4
i2p_post_great_renaming
i2p_0_3_0_3
Labels
Clear labels
#1026
#1031
#1033
#1036
#1040
#1049
#1051
#1065
#1067
#1076
#1105
#1112
#1139
#1166
#1170
#1172
#1176
#1200
#1222
#1223
#1259
#1263
#1274
#1289
#1302
#1304
#1306
#1308
#1320
#1337
#1338
#1372
#1381
#1384
#1393
#1399
#1410
#1415
#1418
#1438
#1453
#1460
#1479
#1491
#1499
#1519
#1522
#1560
#1564
#1584
#1609
#1613
#1637
#1655
#1657
#1684
#1685
#1689
#1694
#1697
#1716
#1724
#1740
#1742
#1753
#1758
#1766
#1767
#1775
#1802
#1805
#1834
#1837
#1838
#1847
#1848
#1869
#1877
#1893
#1907
#1911
#1915
#1928
#1938
#1951
#1979
#1981
#1982
#1985
#1990
#1999
#2018
#2023
#2024
#2035
#2039
#2056
#2080
#2081
#2083
#2085
#2086
#2088
#2090
#2099
#2100
#2101
#2102
#2106
#2110
#2112
#2114
#2121
#2142
#2145
#2146
#2147
#2149
#2158
#2160
#2162
#2169
#2173
#2177
#2182
#2193
#2212
#2221
#2230
#2231
#2233
#2238
#2240
#2241
#2244
#2251
#2252
#2255
#2257
#2259
#2261
#2263
#2264
#2265
#2269
#2271
#2274
#2275
#2278
#2281
#2297
#23
#2302
#2303
#2304
#2305
#2306
#2309
#2319
#2323
#2324
#2325
#2336
#2337
#2340
#2341
#2346
#2350
#2363
#2371
#2374
#2375
#2376
#2381
#2386
#2393
#2396
#2402
#2411
#2420
#2421
#2426
#2428
#2429
#2431
#2433
#2434
#2446
#2459
#2467
#2472
#2475
#2496
#2497
#2506
#2509
#2512
#2540
#2562
#2572
#2608
#2609
#2613
#2619
#2620
#2625
#2640
#2641
#2642
#2643
#2646
#2647
#2650
#2653
#2655
#2656
#2658
#2660
#2664
#2670
#2672
#2675
#2680
#2681
#2682
#2689
#2690
#2691
#2695
#2700
#2701
#2703
#2704
#2705
#2707
#2711
#2721
#2729
#2730
#2733
#2734
#2735
#2736
#2737
#2738
#2750
#2751
#2754
#2763
#2764
#2766
#2771
#2772
#2773
#2774
#2775
#2780
#2782
#2792
#2793
#2795
#2796
#2799
#2801
#2802
#2803
#2805
#2807
#371
#374
#375
#376
#377
#378
#380
#381
#383
#384
#385
#386
#392
#44
#532
#629
#662
#666
#689
#691
#698
#699
#719
#725
#730
#731
#738
#745
#752
#774
#816
#818
#82
#829
#847
#857
#888
#933
#961
#971
#977
#981
0.9.18
0.9.20
0.9.21
0.9.23
0.9.24
0.9.25
0.9.27
0.9.28
0.9.29
0.9.30
0.9.31
0.9.32
0.9.33
0.9.35
0.9.36
0.9.37
0.9.38
0.9.39
0.9.42
0.9.43
0.9.45
0.9.46
0.9.47
0.9.48
0.9.49
0.9.50
0.9.9
BOB
I2CP
SAM
addressbook
api
apps
blocker
build
console
critical
crypto
data
debian
defect
docker
duplicate
easy-install bundle
enhancement
eventually
general
i2psnark
i2ptunnel
infrastructure
installer
jetty
maintenance
major
minor
misc
naming
netdb
not a bug
not our bug
package
profiles
research
router
soon
streaming
susidns
susimail
systray
task
tests
transport
trivial
tunnels
unconfirmed
undecided
update
utils
website
wontfix
works-for-me
wrapper
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: I2P_Developers/i2p.i2p#353
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Opened 3 years ago
Last modified 3 years ago
#2304newdefect
Torrents wrecked by inconsistent handling of "unsafe" characters
Reported by:joggerOwned by:zzz
Priority:
minor
Milestone:
undecided
Component:
apps/i2psnark
Version:
0.9.36
Keywords:
Cc:
Parent Tickets:
Sensitive:
no
Description
Bug surfaces with filenames written by some Mac applications containing characters that have their high bit set. Example hexdump "EFBC8F" wich is displayed as " / ". Lots of those sequences exist.
Torrent created correctly with these characters inside the torrent file on Linux and Mac, Java 9 and 10.
Torrent downloads unchanged to Linux, Java 9 and 10. Downloaded torrent checks clean when moved to another instance on Linux or after crash. Same behaviour observed on Mac for 0.9.35 and Java 9.
On Mac with 0.9.36 and Java 10 above sequence is changed to a single underscore. Torrents do not check clean after a crash or when moved in after downloaded on Linux. As a consequence one can not be sure that it will be possible to seed a downloaded torrent at a later time or on a different machine.
Note about the standard for testing these kind of issues:
It was Kernighan & Pike in The Practice of Programming who said as much in Chapter 6, Testing, §6.5 Stress Tests:
Subtickets
comment:2 Changed 3 years ago by jogger
Basically you are saying that torrents downloaded (not created) to a Mac with 0.9.35 / Java 9 with "unsafe characters" intact are wrecked on the very same machine after upgrading to 0.9.36 / Java 10 because for some reason filenames are no longer valid. Bad news if you can not move them to Linux.
As a further consequence I can no longer move torrents downloaded on a Mac to Linux because on Linux the characters now considered unsafe on the Mac are still valid.
I suggest changing the policy and abandon all character conversion except for null and slash as long as some Unix is detected as the underlying OS.
comment:1 Changed 3 years ago by zzz
related: #571 #771 #1132 #1415
https://www.fileformat.info/info/unicode/char/ff0f/index.htm
0xEFBC8F is valid UTF-8, U+FF0F FULL WIDTH SOLIDUS
We validate based on the default charset for the JVM, which comes from the OS. If the character is not available in the default charset, it can't be mapped to that charset. So we need to replace it with something else. We use '_'. Converting between charsets is lossy, there's no way to fix it. In addition, even in the same charset, different OSes have different rules on valid chars in file names, and things may happen to file names when you copy them between OSes. Again, that's not fixable by us.