equal
deleted
inserted
replaced
377 \end{frame}} |
377 \end{frame}} |
378 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
378 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
379 |
379 |
380 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
380 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
381 \mode<presentation>{ |
381 \mode<presentation>{ |
|
382 \begin{frame}[c] |
|
383 \frametitle{\begin{tabular}{c}Evil Regular Expressions\end{tabular}} |
|
384 |
|
385 \begin{itemize} |
|
386 \item \alert{R}egular \alert{e}xpression \alert{D}enial \alert{o}f \alert{S}ervice (ReDoS)\bigskip |
|
387 \item Evil regular expressions\medskip |
|
388 \begin{itemize} |
|
389 \item \bl{$(a?\{n\}) \cdot a\{n\}$} |
|
390 \item \bl{$(a^+)^+$} |
|
391 \item \bl{$([a$\,-\,$z]^+)^*$} |
|
392 \item \bl{$(a + a \cdot a)^+$} |
|
393 \item \bl{$(a + a?)^+$} |
|
394 \end{itemize} |
|
395 \end{itemize} |
|
396 |
|
397 \end{frame}} |
|
398 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
399 |
|
400 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
401 \mode<presentation>{ |
382 \begin{frame}[t] |
402 \begin{frame}[t] |
383 \frametitle{\begin{tabular}{c}A Matching Algorithm\end{tabular}} |
403 \frametitle{\begin{tabular}{c}A Matching Algorithm\end{tabular}} |
384 |
404 |
385 \small |
405 \small |
386 \ldots{}whether a regular expression can match the empty string: |
406 \ldots{}whether a regular expression can match the empty string: |