test-releasefile-date-older 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/bin/sh
  2. set -e
  3. TESTDIR="$(readlink -f "$(dirname "$0")")"
  4. . "$TESTDIR/framework"
  5. setupenvironment
  6. configarchitecture 'i386'
  7. insertpackage 'wheezy' 'apt' 'all' '0.8.15'
  8. setupaptarchive --no-update
  9. # we don't complain as the server could have just sent a 'Hit' here and this
  10. # 'downgrade attack' is usually performed by out-of-sync mirrors. Valid-Until
  11. # catches the 'real' downgrade attacks (expect that it finds stale mirrors).
  12. # Scaring users with an error here serves hence no point.
  13. msgmsg 'InRelease file is silently rejected if' 'new Date is before old Date'
  14. rm -rf rootdir/var/lib/apt/lists
  15. generatereleasefiles 'now' 'now + 7 days'
  16. signreleasefiles
  17. testsuccess aptget update
  18. listcurrentlistsdirectory > listsdir.lst
  19. redatereleasefiles 'now - 2 days'
  20. testsuccess aptget update
  21. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  22. msgmsg 'Release.gpg file is silently rejected if' 'new Date is before old Date'
  23. rm -rf rootdir/var/lib/apt/lists
  24. generatereleasefiles 'now' 'now + 7 days'
  25. signreleasefiles
  26. find aptarchive -name 'InRelease' -delete
  27. testsuccess aptget update
  28. listcurrentlistsdirectory > listsdir.lst
  29. redatereleasefiles 'now - 2 days'
  30. find aptarchive -name 'InRelease' -delete
  31. testsuccess aptget update
  32. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  33. msgmsg 'Crisscross InRelease/Release.gpg file is silently rejected if' 'new Date is before old Date'
  34. rm -rf rootdir/var/lib/apt/lists
  35. generatereleasefiles 'now' 'now + 7 days'
  36. signreleasefiles
  37. find aptarchive -name 'Release.gpg' -delete
  38. testsuccess aptget update
  39. listcurrentlistsdirectory > listsdir.lst
  40. redatereleasefiles 'now - 2 days'
  41. find aptarchive -name 'InRelease' -delete
  42. testsuccess aptget update
  43. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  44. msgmsg 'Crisscross Release.gpg/InRelease file is silently rejected if' 'new Date is before old Date'
  45. rm -rf rootdir/var/lib/apt/lists
  46. generatereleasefiles 'now' 'now + 7 days'
  47. signreleasefiles
  48. find aptarchive -name 'InRelease' -delete
  49. testsuccess aptget update
  50. listcurrentlistsdirectory > listsdir.lst
  51. redatereleasefiles 'now - 2 days'
  52. find aptarchive -name 'Release.gpg' -delete
  53. testsuccess aptget update
  54. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  55. msgmsg 'Release file has' 'no Date and no Valid-Until field'
  56. rm -rf rootdir/var/lib/apt/lists
  57. generatereleasefiles 'now'
  58. sed -i '/^Date: / d' $(find ./aptarchive -name 'Release')
  59. signreleasefiles
  60. testwarning aptget update
  61. listcurrentlistsdirectory > listsdir.lst
  62. # have no effect as Date is unknown
  63. testwarning aptget update -o Acquire::Min-ValidTime=$((3600*24*30))
  64. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  65. testwarning aptget update -o Acquire::Max-ValidTime=1
  66. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  67. sed -i '/^Codename: / a\
  68. Another-Field: yes' $(find aptarchive/ -name 'Release')
  69. touch -d 'now + 1 day' $(find aptarchive/ -name 'Release')
  70. signreleasefiles "${2:-Joe Sixpack}"
  71. testwarning aptget update
  72. testsuccess cmp $(find aptarchive/ -name 'InRelease') $(find rootdir/var/lib/apt/ -name '*_InRelease')
  73. msgmsg 'Release file has' 'no Date field, but Valid-Until expired'
  74. rm -rf rootdir/var/lib/apt/lists
  75. generatereleasefiles 'now' 'now - 2 days'
  76. sed -i '/^Date: / d' $(find ./aptarchive -name 'Release')
  77. signreleasefiles
  78. testfailure aptget update
  79. listcurrentlistsdirectory > listsdir.lst
  80. # have no effect as Date is unknown
  81. testfailure aptget update -o Acquire::Min-ValidTime=$((3600*24*30))
  82. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  83. testfailure aptget update -o Acquire::Max-ValidTime=1
  84. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  85. msgmsg 'Release file has' 'no Date field, but Valid-Until is good'
  86. rm -rf rootdir/var/lib/apt/lists
  87. generatereleasefiles 'now' 'now + 2 days'
  88. sed -i '/^Date: / d' $(find ./aptarchive -name 'Release')
  89. signreleasefiles
  90. testwarning aptget update