Skip to content

Build fails with on latex/pdf output with '! You can't use `macro parameter character #' in horizontal mode.' #246

@kbeyls

Description

@kbeyls

Last week, the build started failing on the latex/pdf output.
The relevant part of the output log seems to be:

 ! You can't use `macro parameter character #' in horizontal mode.
<argument> ##
             ##168
l.10 ...book/issues/168}{##168}}}{25}{section*.16}
                                                  %
? 
! Emergency stop.
<argument> ##
             ##168
l.10 ...book/issues/168}{##168}}}{25}{section*.16}
                                                  %
!  ==> Fatal error occurred, no output PDF file produced!

When investigating this further, it seems that in the build/book.tdo file, which is presumably produced to create a list of todos, there is an incorrect entry produced as follows:

\contentsline {todo}{7. The gadgets in the figure are made up, chosen to highlight that each gadget can end in a different type of indirect control flow transfer instruction. Consider replacing them with more realistic ones. \href {https://github.com/llsoftsec/llsoftsecbook/issues/165}{\#165}}{16}{section*.12}%
\contentsline {todo}{8. {Add more references to relevant research \href {https://github.com/llsoftsec/llsoftsecbook/issues/166}{\#166}}}{21}{section*.13}%
\contentsline {todo}{9. {Mention more Pointer Authentication uses in later section, and add link here \href {https://github.com/llsoftsec/llsoftsecbook/issues/167}{\#167}}}{21}{section*.14}%
\contentsline {todo}{10. {Add diagram to demonstrate how HWASAN works \href {https://github.com/llsoftsec/llsoftsecbook/issues/168}{##168}}}{25}{section*.16}%
\contentsline {todo}{11. {Consider adding a whole section on MTE and its applications \href {https://github.com/llsoftsec/llsoftsecbook/issues/169}{\#169}}}{26}{section*.17}%
\contentsline {todo}{12. Describe other mechanisms for detecting memory errors, both software-based (static analysis, library and buffer hardening) and hardware-based, e.g.~PAuth-based pointer integrity schemes, MTE etc \href {https://github.com/llsoftsec/llsoftsecbook/issues/170}{\#170}}{26}{section*.18}%

Note that for some reason, the reference to issue 168 in there is written as .. llsoftsecbook/issues/168}{##168}}}{25}{section*.16}%, instead of the correct .. llsoftsecbook/issues/168}{\#168}}}{25}{section*.16}% (backslash instead of hash character).

The content of the book that generates this hasn't been changed for a long time.

It seems that something changed in the texlive 2020 distribution we're using that introduced this erroneous behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions