mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-15 15:53:55 +00:00
Addressed IOActive issues:
1. Remapped ASTRING to UTF8String 2. Added size check
This commit is contained in:
@@ -174,38 +174,6 @@ duk_ret_t ILibDuktape_GenericMarshal_Variable_Val_HSTRING2(duk_context *ctx)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
duk_ret_t ILibDuktape_GenericMarshal_Variable_Val_ASTRING(duk_context *ctx)
|
|
||||||
{
|
|
||||||
void *ptr;
|
|
||||||
int size;
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
char astr[65535];
|
|
||||||
size_t s;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
duk_push_this(ctx); // [var]
|
|
||||||
duk_get_prop_string(ctx, -1, "_ptr"); // [var][ptr]
|
|
||||||
ptr = duk_to_pointer(ctx, -1);
|
|
||||||
duk_get_prop_string(ctx, -2, "_size"); // [var][ptr][size]
|
|
||||||
size = duk_to_int(ctx, -1);
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
if (size == 0) { size = (int)wcsnlen_s((const wchar_t*)ptr, sizeof(astr) * 2); }
|
|
||||||
if (wcstombs_s(&s, astr, sizeof(astr), (const wchar_t*)ptr, size) == 0)
|
|
||||||
{
|
|
||||||
duk_push_string(ctx, (char*)astr);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return(ILibDuktape_Error(ctx, "String Conversion Error: %d", GetLastError()));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
duk_push_lstring(ctx, (const char*)ptr, size);
|
|
||||||
#endif
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
duk_ret_t ILibDuktape_GenericMarshal_Variable_Val_UTFSTRING(duk_context *ctx)
|
duk_ret_t ILibDuktape_GenericMarshal_Variable_Val_UTFSTRING(duk_context *ctx)
|
||||||
{
|
{
|
||||||
void *ptr;
|
void *ptr;
|
||||||
@@ -485,7 +453,7 @@ void ILibDuktape_GenericMarshal_Variable_PUSH(duk_context *ctx, void *ptr, int s
|
|||||||
#endif
|
#endif
|
||||||
ILibDuktape_CreateInstanceMethod(ctx, "Deref", ILibDuktape_GenericMarshal_Variable_Deref, DUK_VARARGS);
|
ILibDuktape_CreateInstanceMethod(ctx, "Deref", ILibDuktape_GenericMarshal_Variable_Deref, DUK_VARARGS);
|
||||||
ILibDuktape_CreateEventWithGetter(ctx, "String", ILibDuktape_GenericMarshal_Variable_Val_STRING);
|
ILibDuktape_CreateEventWithGetter(ctx, "String", ILibDuktape_GenericMarshal_Variable_Val_STRING);
|
||||||
ILibDuktape_CreateEventWithGetter(ctx, "AnsiString", ILibDuktape_GenericMarshal_Variable_Val_ASTRING);
|
ILibDuktape_CreateEventWithGetter(ctx, "AnsiString", ILibDuktape_GenericMarshal_Variable_Val_UTFSTRING);
|
||||||
ILibDuktape_CreateEventWithGetter(ctx, "Wide2UTF8", ILibDuktape_GenericMarshal_Variable_Val_UTFSTRING);
|
ILibDuktape_CreateEventWithGetter(ctx, "Wide2UTF8", ILibDuktape_GenericMarshal_Variable_Val_UTFSTRING);
|
||||||
|
|
||||||
ILibDuktape_CreateEventWithGetter(ctx, "HexString", ILibDuktape_GenericMarshal_Variable_Val_HSTRING);
|
ILibDuktape_CreateEventWithGetter(ctx, "HexString", ILibDuktape_GenericMarshal_Variable_Val_HSTRING);
|
||||||
|
|||||||
@@ -225,6 +225,7 @@ void ILibDuktape_Digest_CalculateNonce(duk_context *ctx, void *heapptr, long lon
|
|||||||
char temp[33];
|
char temp[33];
|
||||||
if (expiration == 0)
|
if (expiration == 0)
|
||||||
{
|
{
|
||||||
|
if (opaqueLen != 16) { ILibDuktape_Error(ctx, "Invalid opaque specified"); return; }
|
||||||
char tmp[8];
|
char tmp[8];
|
||||||
util_hexToBuf(opaque, opaqueLen, tmp);
|
util_hexToBuf(opaque, opaqueLen, tmp);
|
||||||
expiration = ((long long*)tmp)[0];
|
expiration = ((long long*)tmp)[0];
|
||||||
|
|||||||
Reference in New Issue
Block a user