winevt_c 0.4.6 → 0.4.7.rc
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/winevt/winevt_utils.cpp +10 -15
- data/lib/winevt/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: daebe6fe343ceb5ee6a226edd4528a9aa2540c9adbb502738a483d8d30f18302
|
4
|
+
data.tar.gz: cf3a4619ee6294496ebb4690afcc82f64c4adccab8633c47035757789c67df52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0e0154f80009838480068032ddc7e30a0e1d734fa5d0d322829c039048c0ba1f12f6ba2fce0002029db3b6dad510d6ea6e226ff6e090ba8b222c6413e2e0ef3
|
7
|
+
data.tar.gz: 606760e22e450fe632053055278a755af7438b72772dba82c270b16bd8d2ca60eb2c480f4bf81ab44a8b904625f3056717970de7fe067e765b60717aabfa3198
|
data/ext/winevt/winevt_utils.cpp
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
#include <sddl.h>
|
3
3
|
#include <stdlib.h>
|
4
4
|
#include <string>
|
5
|
+
#include <memory>
|
5
6
|
|
6
7
|
char*
|
7
8
|
wstr_to_mbstr(UINT cp, const WCHAR *wstr, int clen)
|
@@ -23,20 +24,17 @@ void free_allocated_mbstr(const char* str)
|
|
23
24
|
VALUE
|
24
25
|
wstr_to_rb_str(UINT cp, const WCHAR *wstr, int clen)
|
25
26
|
{
|
26
|
-
char *ptr;
|
27
27
|
int len = WideCharToMultiByte(cp, 0, wstr, clen, nullptr, 0, nullptr, nullptr);
|
28
|
-
|
29
|
-
WideCharToMultiByte(cp, 0, wstr, clen, ptr, len, nullptr, nullptr);
|
30
|
-
|
31
|
-
VALUE str = rb_utf8_str_new_cstr(ptr);
|
32
|
-
xfree(ptr);
|
28
|
+
std::unique_ptr<char[]> ptr(new char[len]);
|
29
|
+
WideCharToMultiByte(cp, 0, wstr, clen, ptr.get(), len, nullptr, nullptr);
|
30
|
+
VALUE str = rb_utf8_str_new_cstr(ptr.get());
|
33
31
|
|
34
32
|
return str;
|
35
33
|
}
|
36
34
|
|
37
35
|
WCHAR* render_event(EVT_HANDLE handle, DWORD flags)
|
38
36
|
{
|
39
|
-
|
37
|
+
std::unique_ptr<WCHAR[]> buffer(new WCHAR[0]);
|
40
38
|
ULONG bufferSize = 0;
|
41
39
|
ULONG bufferSizeNeeded = 0;
|
42
40
|
ULONG status, count;
|
@@ -45,9 +43,8 @@ WCHAR* render_event(EVT_HANDLE handle, DWORD flags)
|
|
45
43
|
|
46
44
|
do {
|
47
45
|
if (bufferSizeNeeded > bufferSize) {
|
48
|
-
free(buffer);
|
49
46
|
bufferSize = bufferSizeNeeded;
|
50
|
-
buffer
|
47
|
+
buffer.reset(new WCHAR[bufferSize]);
|
51
48
|
if (buffer == nullptr) {
|
52
49
|
status = ERROR_OUTOFMEMORY;
|
53
50
|
bufferSize = 0;
|
@@ -60,7 +57,7 @@ WCHAR* render_event(EVT_HANDLE handle, DWORD flags)
|
|
60
57
|
handle,
|
61
58
|
flags,
|
62
59
|
bufferSize,
|
63
|
-
buffer,
|
60
|
+
buffer.get(),
|
64
61
|
&bufferSizeNeeded,
|
65
62
|
&count) != FALSE) {
|
66
63
|
status = ERROR_SUCCESS;
|
@@ -84,10 +81,7 @@ WCHAR* render_event(EVT_HANDLE handle, DWORD flags)
|
|
84
81
|
rb_raise(rb_eWinevtQueryError, "ErrorCode: %ld\nError: %s\n", status, RSTRING_PTR(errmsg));
|
85
82
|
}
|
86
83
|
|
87
|
-
result = _wcsdup(buffer);
|
88
|
-
|
89
|
-
if (buffer)
|
90
|
-
xfree(buffer);
|
84
|
+
result = _wcsdup(buffer.get());
|
91
85
|
|
92
86
|
return result;
|
93
87
|
}
|
@@ -177,7 +171,8 @@ VALUE get_values(EVT_HANDLE handle)
|
|
177
171
|
if (pRenderedValues[i].StringVal == nullptr) {
|
178
172
|
rb_ary_push(userValues, rb_utf8_str_new_cstr("(NULL)"));
|
179
173
|
} else {
|
180
|
-
|
174
|
+
std::wstring wStr(pRenderedValues[i].StringVal);
|
175
|
+
rbObj = wstr_to_rb_str(CP_UTF8, wStr.c_str(), -1);
|
181
176
|
rb_ary_push(userValues, rbObj);
|
182
177
|
}
|
183
178
|
break;
|
data/lib/winevt/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: winevt_c
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.7.rc
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroshi Hatake
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -133,9 +133,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
133
|
version: '2.4'
|
134
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - ">"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 1.3.1
|
139
139
|
requirements: []
|
140
140
|
rubyforge_project:
|
141
141
|
rubygems_version: 2.7.3
|