1
2package org.bouncycastle.i18n.filter;
3
4/**
5 * Filter for strings to store in a SQL table.
6 *
7 * escapes ' " = - / \ ; \r \n
8 */
9public class SQLFilter implements Filter
10{
11
12    public String doFilter(String input)
13    {
14        StringBuffer buf = new StringBuffer(input);
15        int i = 0;
16        while (i < buf.length())
17        {
18            char ch = buf.charAt(i);
19            switch (ch)
20            {
21            case '\'':
22                buf.replace(i,i+1,"\\\'");
23                i += 1;
24                break;
25            case '\"':
26                buf.replace(i,i+1,"\\\"");
27                i += 1;
28                break;
29            case '=':
30                buf.replace(i,i+1,"\\=");
31                i += 1;
32                break;
33            case '-':
34                buf.replace(i,i+1,"\\-");
35                i += 1;
36                break;
37            case '/':
38                buf.replace(i,i+1,"\\/");
39                i += 1;
40                break;
41            case '\\':
42                buf.replace(i,i+1,"\\\\");
43                i += 1;
44                break;
45            case ';':
46                buf.replace(i,i+1,"\\;");
47                i += 1;
48                break;
49            case '\r':
50                buf.replace(i,i+1,"\\r");
51                i += 1;
52                break;
53            case '\n':
54                buf.replace(i,i+1,"\\n");
55                i += 1;
56                break;
57            default:
58            }
59            i++;
60        }
61        return buf.toString();
62    }
63
64}
65