cgi 0.3.6 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cgi might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef7c6fbc3fed4edb75963f96b0b7a150dca2d296730f28eb42844e7582f73ddb
4
- data.tar.gz: 6dff4891d8e6b75480346969bef5efd4e33c323a8e6dbe2196e07abf5d4b4366
3
+ metadata.gz: 322dda46df05e926c9ec8e57cdc7039b979977445c944901bba03b862b3615bb
4
+ data.tar.gz: 8284fe91ea3d3c29d7a4febb86d71453dd931cda16c9e6e6d5f56d876c78d596
5
5
  SHA512:
6
- metadata.gz: 4b6abc351ceaf68ededa9d590fdd7adfb1fe8b32d4818128be7fb10867788cf32de65ea5d11cd4d7a38dc1a4adf19c1faee1b6a3689aeccea943178d18b09f8d
7
- data.tar.gz: 1d805aede830aabc0c7d7ca577d8bd2bca541956d37cadeda9262a5e5ee01af5d940d4e135b907deadc16d20ef5a8357b2d4bb8817fc4241491f8305030e3d2e
6
+ metadata.gz: 8e5917d16d0814a8b293f78beec9c15b453b359b6539d435d8e4fb555388be2d4b86a0c96f63233c766638c5717627ed44d013dbcebb99b3a83d19637b0e1055
7
+ data.tar.gz: 85fa69cdf8c6b19803d598ff5cbeac2787316dede6a677702e7103df050f7f6fa6e25bb61fe215e571c9a425f7dc2e487473a1f9883c0fffd7cb756651dad0df
@@ -83,7 +83,7 @@ optimized_unescape_html(VALUE str)
83
83
  unsigned long charlimit = (strcasecmp(rb_enc_name(enc), "UTF-8") == 0 ? UNICODE_MAX :
84
84
  strcasecmp(rb_enc_name(enc), "ISO-8859-1") == 0 ? 256 :
85
85
  128);
86
- long i, len, beg = 0;
86
+ long i, j, len, beg = 0;
87
87
  size_t clen, plen;
88
88
  int overflow;
89
89
  const char *cstr;
@@ -100,6 +100,7 @@ optimized_unescape_html(VALUE str)
100
100
  plen = i - beg;
101
101
  if (++i >= len) break;
102
102
  c = (unsigned char)cstr[i];
103
+ j = i;
103
104
  #define MATCH(s) (len - i >= (int)rb_strlen_lit(s) && \
104
105
  memcmp(&cstr[i], s, rb_strlen_lit(s)) == 0 && \
105
106
  (i += rb_strlen_lit(s) - 1, 1))
@@ -112,28 +113,40 @@ optimized_unescape_html(VALUE str)
112
113
  else if (MATCH("mp;")) {
113
114
  c = '&';
114
115
  }
115
- else continue;
116
+ else {
117
+ i = j;
118
+ continue;
119
+ }
116
120
  break;
117
121
  case 'q':
118
122
  ++i;
119
123
  if (MATCH("uot;")) {
120
124
  c = '"';
121
125
  }
122
- else continue;
126
+ else {
127
+ i = j;
128
+ continue;
129
+ }
123
130
  break;
124
131
  case 'g':
125
132
  ++i;
126
133
  if (MATCH("t;")) {
127
134
  c = '>';
128
135
  }
129
- else continue;
136
+ else {
137
+ i = j;
138
+ continue;
139
+ }
130
140
  break;
131
141
  case 'l':
132
142
  ++i;
133
143
  if (MATCH("t;")) {
134
144
  c = '<';
135
145
  }
136
- else continue;
146
+ else {
147
+ i = j;
148
+ continue;
149
+ }
137
150
  break;
138
151
  case '#':
139
152
  if (len - ++i >= 2 && ISDIGIT(cstr[i])) {
@@ -142,9 +155,15 @@ optimized_unescape_html(VALUE str)
142
155
  else if ((cstr[i] == 'x' || cstr[i] == 'X') && len - ++i >= 2 && ISXDIGIT(cstr[i])) {
143
156
  cc = ruby_scan_digits(&cstr[i], len-i, 16, &clen, &overflow);
144
157
  }
145
- else continue;
158
+ else {
159
+ i = j;
160
+ continue;
161
+ }
146
162
  i += clen;
147
- if (overflow || cc >= charlimit || cstr[i] != ';') continue;
163
+ if (overflow || cc >= charlimit || cstr[i] != ';') {
164
+ i = j;
165
+ continue;
166
+ }
148
167
  if (!dest) {
149
168
  dest = rb_str_buf_new(len);
150
169
  }
@@ -458,7 +477,9 @@ InitVM_escape(void)
458
477
  rb_define_method(rb_mEscape, "escapeHTML", cgiesc_escape_html, 1);
459
478
  rb_define_method(rb_mEscape, "unescapeHTML", cgiesc_unescape_html, 1);
460
479
  rb_define_method(rb_mEscape, "escapeURIComponent", cgiesc_escape_uri_component, 1);
480
+ rb_define_alias(rb_mEscape, "escape_uri_component", "escapeURIComponent");
461
481
  rb_define_method(rb_mEscape, "unescapeURIComponent", cgiesc_unescape_uri_component, -1);
482
+ rb_define_alias(rb_mEscape, "unescape_uri_component", "unescapeURIComponent");
462
483
  rb_define_method(rb_mEscape, "escape", cgiesc_escape, 1);
463
484
  rb_define_method(rb_mEscape, "unescape", cgiesc_unescape, -1);
464
485
  rb_prepend_module(rb_mUtil, rb_mEscape);
@@ -1,3 +1,7 @@
1
1
  require 'mkmf'
2
2
 
3
- create_makefile 'cgi/escape'
3
+ if RUBY_ENGINE == 'truffleruby'
4
+ File.write("Makefile", dummy_makefile($srcdir).join(""))
5
+ else
6
+ create_makefile 'cgi/escape'
7
+ end
data/lib/cgi/session.rb CHANGED
@@ -279,7 +279,7 @@ class CGI
279
279
  # fields are surrounded by a <fieldset> tag in HTML 4 generation, which
280
280
  # is _not_ invisible on many browsers; you may wish to disable the
281
281
  # use of fieldsets with code similar to the following
282
- # (see http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37805)
282
+ # (see https://blade.ruby-lang.org/ruby-list/37805)
283
283
  #
284
284
  # cgi = CGI.new("html4")
285
285
  # class << cgi
data/lib/cgi/util.rb CHANGED
@@ -36,7 +36,7 @@ module CGI::Util
36
36
 
37
37
  # URL-encode a string following RFC 3986
38
38
  # Space characters (+" "+) are encoded with (+"%20"+)
39
- # url_encoded_string = CGI.escape("'Stop!' said Fred")
39
+ # url_encoded_string = CGI.escapeURIComponent("'Stop!' said Fred")
40
40
  # # => "%27Stop%21%27%20said%20Fred"
41
41
  def escapeURIComponent(string)
42
42
  encoding = string.encoding
@@ -46,9 +46,10 @@ module CGI::Util
46
46
  end
47
47
  buffer.force_encoding(encoding)
48
48
  end
49
+ alias escape_uri_component escapeURIComponent
49
50
 
50
51
  # URL-decode a string following RFC 3986 with encoding(optional).
51
- # string = CGI.unescape("%27Stop%21%27+said%20Fred")
52
+ # string = CGI.unescapeURIComponent("%27Stop%21%27+said%20Fred")
52
53
  # # => "'Stop!'+said Fred"
53
54
  def unescapeURIComponent(string, encoding = @@accept_charset)
54
55
  str = string.b
@@ -59,6 +60,8 @@ module CGI::Util
59
60
  str.valid_encoding? ? str : str.force_encoding(string.encoding)
60
61
  end
61
62
 
63
+ alias unescape_uri_component unescapeURIComponent
64
+
62
65
  # The set of special characters and their escaped values
63
66
  TABLE_FOR_ESCAPE_HTML__ = {
64
67
  "'" => '&#39;',
@@ -90,9 +93,12 @@ module CGI::Util
90
93
  end
91
94
  end
92
95
 
93
- begin
94
- require 'cgi/escape'
95
- rescue LoadError
96
+ # TruffleRuby runs the pure-Ruby variant faster, do not use the C extension there
97
+ unless RUBY_ENGINE == 'truffleruby'
98
+ begin
99
+ require 'cgi/escape'
100
+ rescue LoadError
101
+ end
96
102
  end
97
103
 
98
104
  # Unescape a string that has been HTML-escaped
data/lib/cgi.rb CHANGED
@@ -288,7 +288,7 @@
288
288
  #
289
289
 
290
290
  class CGI
291
- VERSION = "0.3.6"
291
+ VERSION = "0.4.1"
292
292
  end
293
293
 
294
294
  require 'cgi/core'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cgi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yukihiro Matsumoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-28 00:00:00.000000000 Z
11
+ date: 2023-12-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Support for the Common Gateway Interface protocol.
14
14
  email:
@@ -52,7 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  requirements: []
55
- rubygems_version: 3.4.0.dev
55
+ rubygems_version: 3.5.0.dev
56
56
  signing_key:
57
57
  specification_version: 4
58
58
  summary: Support for the Common Gateway Interface protocol.