trilogy 2.1.0 → 2.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 79779c19d22b6a05581eba7135cf2fd588a64ee33b59c8caf82a4dc51277bf5f
4
- data.tar.gz: 48c88ac7fe38563810abc4f21858758f9b54f102b4abb63c81d0a41f4bd0a687
3
+ metadata.gz: af92055f653afc0f6a507574ae9d1e0dd41ef2bc17519d01521d64075501187d
4
+ data.tar.gz: b056dbc89c70f108d0038019a0da1cd80782f4b6405ffd1eb58b8ed86acaa5b4
5
5
  SHA512:
6
- metadata.gz: ab915961914de4e0ed847b93aae3357fe328186cd0fdf602f322c379bdd15a3d1aa935535783bfce892cb5013b41c841581c83c42ea248cc6ff0efd7abd2d6eb
7
- data.tar.gz: 6865a1c5b9c96ff4d4eefda88cc771aff23b3ff6db8534767edbdba4a929eec1f42184ae845fe02664c1e6b8c64c72aa52f5948233d8ca35f57c510c60ef42a9
6
+ metadata.gz: 5482a88724d329914717b423d9fd1d5ae71818a17b4104122c7c5a2f4cabd77df37e12808644a23d9dc58b9b8a728e00c486072de6e36f2d508531361a794185
7
+ data.tar.gz: 66e9a9c02a948844d8e806761f1c3993d4e932ebbaa59b31acb686c60044406390f3e46df364860474326bca26f68406cf8abb57bd9fb75f8d95e27c3f54bdc2
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rake/extensiontask"
3
+ require "rake/testtask"
3
4
 
4
5
  Rake::ExtensionTask.new do |ext|
5
6
  ext.name = "cext"
@@ -7,9 +8,12 @@ Rake::ExtensionTask.new do |ext|
7
8
  ext.lib_dir = "lib/trilogy"
8
9
  end
9
10
 
10
- task :test => :compile do
11
- system('script/test')
11
+ Rake::TestTask.new do |t|
12
+ t.libs << "test"
13
+ t.test_files = FileList['test/*_test.rb']
14
+ t.verbose = true
12
15
  end
16
+ task :test => :compile
13
17
 
14
18
  task :default => :test
15
19
 
@@ -26,7 +26,7 @@ typedef struct {
26
26
  * buffer - A pre-initialized trilogy_buffer_t pointer
27
27
  * seq - The initial sequence number for the packet to be built. This is
28
28
  * the initial number because the builder API will automatically
29
- * split buffers that are larger than TRILOGY_MAX_PROTO_PACKET_LEN into
29
+ * split buffers that are larger than TRILOGY_MAX_PACKET_LEN into
30
30
  * multiple packets and increment the sequence number in each packet
31
31
  * following the initial.
32
32
  *
@@ -370,11 +370,6 @@ typedef enum {
370
370
  #undef XX
371
371
  } TRILOGY_COLUMN_FLAG_t;
372
372
 
373
- /*
374
- * Data between client and server is exchanged in packets of max 16MByte size.
375
- */
376
- #define TRILOGY_MAX_PROTO_PACKET_LEN 0xffffff
377
-
378
373
  // Typical response packet types
379
374
  typedef enum {
380
375
  TRILOGY_PACKET_OK = 0x0,
@@ -261,22 +261,15 @@ int trilogy_parse_handshake_packet(const uint8_t *buff, size_t len, trilogy_hand
261
261
  // This space is reserved. It should be all NULL bytes but some tools or
262
262
  // future versions of MySQL-compatible clients may use it. This library
263
263
  // opts to skip the validation as some servers don't respect the protocol.
264
- //
265
- static const uint8_t null_filler[10] = {0};
266
-
267
- const void *str;
268
- CHECKED(trilogy_reader_get_buffer(&reader, 10, &str));
269
-
270
- if (memcmp(str, null_filler, 10) != 0) {
271
- // corrupt handshake packet
272
- return TRILOGY_PROTOCOL_VIOLATION;
273
- }
264
+ CHECKED(trilogy_reader_get_buffer(&reader, 10, NULL));
274
265
 
275
266
  if (out_packet->capabilities & TRILOGY_CAPABILITIES_SECURE_CONNECTION && auth_data_len > 8) {
276
267
  uint8_t remaining_auth_data_len = auth_data_len - 8;
277
268
 
278
- if (remaining_auth_data_len > 13) {
279
- remaining_auth_data_len = 13;
269
+ // The auth plugins we support all provide exactly 21 bytes of
270
+ // auth_data. Reject any other values for auth_data_len.
271
+ if (SCRAMBLE_LEN + 1 != auth_data_len) {
272
+ return TRILOGY_PROTOCOL_VIOLATION;
280
273
  }
281
274
 
282
275
  CHECKED(trilogy_reader_copy_buffer(&reader, remaining_auth_data_len, out_packet->scramble + 8));
@@ -577,10 +570,12 @@ int trilogy_build_auth_switch_response_packet(trilogy_builder_t *builder, const
577
570
  unsigned int auth_response_len = 0;
578
571
  uint8_t auth_response[EVP_MAX_MD_SIZE];
579
572
 
580
- if (!strcmp("caching_sha2_password", auth_plugin)) {
581
- trilogy_pack_scramble_sha2_hash(scramble, pass, pass_len, auth_response, &auth_response_len);
582
- } else {
583
- trilogy_pack_scramble_native_hash(scramble, pass, pass_len, auth_response, &auth_response_len);
573
+ if (pass_len > 0) {
574
+ if (!strcmp("caching_sha2_password", auth_plugin)) {
575
+ trilogy_pack_scramble_sha2_hash(scramble, pass, pass_len, auth_response, &auth_response_len);
576
+ } else {
577
+ trilogy_pack_scramble_native_hash(scramble, pass, pass_len, auth_response, &auth_response_len);
578
+ }
584
579
  }
585
580
 
586
581
  CHECKED(trilogy_builder_write_buffer(builder, auth_response, auth_response_len));
@@ -1,3 +1,3 @@
1
1
  class Trilogy
2
- VERSION = "2.1.0"
2
+ VERSION = "2.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trilogy
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-11 00:00:00.000000000 Z
11
+ date: 2022-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  - !ruby/object:Gem::Version
100
100
  version: '0'
101
101
  requirements: []
102
- rubygems_version: 3.3.3
102
+ rubygems_version: 3.3.7
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: A friendly MySQL-compatible library for Ruby, binding to libtrilogy