View Issue Details

IDProjectCategoryView StatusLast Update
0000598filegeneralpublic2017-03-07 22:36
Reporterosm0sis 
Assigned ToChristos Zoulas 
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Product Version5.30 
Target VersionFixed in Version5.31 
Summary0000598: magic detection regression beginning with file 5.30
DescriptionBeginning with file 5.30 (I have tested at the current master HEAD) there is no detection of piped stdin data I use to find a footer in Android boot images.

This works on all versions of file up to and including 5.29 so I have reported it as a regression and hopefully this functionality can be restored.
Steps To ReproduceOn Linux (using latest GNU tail):

tail s6-seandroid-dtb-boot.img 2>/dev/null | file -m androidbootimg.magic -


On Android (using latest busybox tail):

cat s6-seandroid-dtb-boot.img | busybox tail 2>/dev/null | file -m androidbootimg.magic -
Additional InformationTest file (too large to upload): https://basketbuild.com/filedl/devs?dev=osm0sis&dl=osm0sis/tmp/s6-seandroid-dtb-boot.img

Debugging output from 5.29 (working) and 5.30 (broken) and the .magic file I'm using with file are included below.
TagsNo tags attached.

Relationships

Activities

osm0sis

osm0sis

2017-03-06 20:39

reporter  

debug-530.txt (6,656 bytes)
unknown, 0: Warning: using regular magic file `bin/androidbootimg.magic'
CHROMEOS bootimg: binary
(no description): binary
ELF: binary
OS bootimg: binary
MTK header: binary
QCDT header: binary
(no description): binary
Bump footer: binary
[try zmagic 0]
[try tar 0]
[try cdf 0]
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

7: > 0 string,=CHROMEOS,"CHROMEOS bootimg"]
18446744073709551549 == 0 = 0
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

29: > 0 string,=$OS$\000\000\001,"OS bootimg"]
18446744073709551580 == 0 = 0
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

19: > 0 string,=\177ELF,"ELF"]
18446744073709551489 == 0 = 0
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

41: > 0 string,=QCDT,"QCDT header"]
18446744073709551535 == 0 = 0
mget(type=20, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

53: > 0 search,=A\251\344gtM\035\033\244)\362\354\352eRy,"Bump footer"]
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

11: > 0 string,x,""]
0 == *any* = 1
mget(type=20, flag=0, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

12: >> 0 search,=ANDROID!,"AOSP bootimg"]
mget(type=20, flag=10, offset=1024, o=0, nbytes=24908, il=0, nc=0)
mget/96 @1024: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

13: >> 1024 search,=LOKI\001,", LOKI header (recovery)"]
mget(type=20, flag=10, offset=1024, o=0, nbytes=24908, il=0, nc=0)
mget/96 @1024: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

14: >> 1024 search,=LOKI\000,", LOKI header (boot)"]
mget(type=20, flag=10, offset=2048, o=0, nbytes=24908, il=0, nc=0)
mget/96 @2048: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

15: >> 2048 search,=\210\026\210X,", MTK headers"]
mget(type=20, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

33: > 0 search,=\210\026\210X,"MTK header"]
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

47: > 0 string,x,""]
0 == *any* = 1
mget(type=20, flag=0, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

48: >> 0 search,=SEANDROIDENFORCE,"SEAndroid footer"]
[try softmagic 0]
[try ascmagic 0]
debug-530.txt (6,656 bytes)
debug-529.txt (6,805 bytes)
unknown, 0: Warning: using regular magic file `bin/androidbootimg.magic'
CHROMEOS bootimg: binary
(no description): binary
ELF: binary
OS bootimg: binary
MTK header: binary
QCDT header: binary
(no description): binary
Bump footer: binary
[try zmagic 0]
[try tar 0]
[try cdf 0]
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

7: > 0 string,=CHROMEOS,"CHROMEOS bootimg"]
18446744073709551549 == 0 = 0
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

29: > 0 string,=$OS$\000\000\001,"OS bootimg"]
18446744073709551580 == 0 = 0
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

19: > 0 string,=\177ELF,"ELF"]
18446744073709551489 == 0 = 0
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

41: > 0 string,=QCDT,"QCDT header"]
18446744073709551535 == 0 = 0
mget(type=20, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

53: > 0 search,=A\251\344gtM\035\033\244)\362\354\352eRy,"Bump footer"]
18 == 0 = 0
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

11: > 0 string,x,""]
0 == *any* = 1
mget(type=20, flag=0, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

12: >> 0 search,=ANDROID!,"AOSP bootimg"]
3 == 0 = 0
mget(type=20, flag=10, offset=1024, o=0, nbytes=24908, il=0, nc=0)
mget/96 @1024: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

13: >> 1024 search,=LOKI\001,", LOKI header (recovery)"]
18446744073709551610 == 0 = 0
mget(type=20, flag=10, offset=1024, o=0, nbytes=24908, il=0, nc=0)
mget/96 @1024: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

14: >> 1024 search,=LOKI\000,", LOKI header (boot)"]
18446744073709551610 == 0 = 0
mget(type=20, flag=10, offset=2048, o=0, nbytes=24908, il=0, nc=0)
mget/96 @2048: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

15: >> 2048 search,=\210\026\210X,", MTK headers"]
18446744073709551559 == 0 = 0
mget(type=20, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

33: > 0 search,=\210\026\210X,"MTK header"]
18446744073709551559 == 0 = 0
mget(type=5, flag=20, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000]

47: > 0 string,x,""]
0 == *any* = 1
mget(type=20, flag=0, offset=0, o=0, nbytes=24908, il=0, nc=0)
mget/96 @0: \000\000\000\003\000\000\000\004\000\0007\313\000\000\002X\000\000\000\003\000\000\000\004\000\0007\341\000\000\001\220\000\000\000\003\000\000\000\004\000\0007\367\000\000\001\206\000\000\000\003\000\000\000\004\000\0008\026\000\000\001\302\000\000\000\003\000\000\000\004\000\00089\000\000\000\r\000\000\000\003\000\000\000\004\000\0008U\000\000\000\000

48: >> 0 search,=SEANDROIDENFORCE,"SEAndroid footer"]
0 == 0 = 1
[try softmagic 1]
[try elf 0]
debug-529.txt (6,805 bytes)
androidbootimg.magic (1,702 bytes)
Christos Zoulas

Christos Zoulas

2017-03-07 22:36

manager   ~0001480

Thanks, seems to be an off-by-one.

Issue History

Date Modified Username Field Change
2017-03-06 20:39 osm0sis New Issue
2017-03-06 20:39 osm0sis File Added: androidbootimg.magic
2017-03-06 20:39 osm0sis File Added: debug-529.txt
2017-03-06 20:39 osm0sis File Added: debug-530.txt
2017-03-07 22:36 Christos Zoulas Assigned To => Christos Zoulas
2017-03-07 22:36 Christos Zoulas Status new => assigned
2017-03-07 22:36 Christos Zoulas Status assigned => resolved
2017-03-07 22:36 Christos Zoulas Resolution open => fixed
2017-03-07 22:36 Christos Zoulas Fixed in Version => 5.31
2017-03-07 22:36 Christos Zoulas Note Added: 0001480