Skip to content

Commit 3d641e9

Browse files
Several fixes to Json clients and xml serialization. Security fixes after security review.
1 parent e9b0c4b commit 3d641e9

File tree

1,171 files changed

+54878
-6487
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,171 files changed

+54878
-6487
lines changed

CMakeLists.txt

+17-10
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ SET(PLATFORM_WINDOWS 0)
1313
SET(PLATFORM_LINUX 0)
1414
SET(PLATFORM_ANDROID 0)
1515
SET(PLATFORM_APPLE 0)
16+
SET(GENERATE_VERSION_INFO 0)
1617

1718
if("${TARGET_ARCH}" STREQUAL "WINDOWS")
1819
SET(PLATFORM_WINDOWS 1)
@@ -99,7 +100,7 @@ elseif(PLATFORM_LINUX)
99100
set(SDK_INSTALL_BINARY_PREFIX "linux")
100101
elseif(PLATFORM_ANDROID)
101102
set(SDK_INSTALL_BINARY_PREFIX "android")
102-
elseif(PLATFORM_MAC)
103+
elseif(PLATFORM_APPLE)
103104
set(SDK_INSTALL_BINARY_PREFIX "mac")
104105
endif()
105106

@@ -114,6 +115,7 @@ endif()
114115

115116
message(STATUS "Install binary prefix: ${SDK_INSTALL_BINARY_PREFIX}")
116117

118+
117119
if(BUILD_SHARED_LIBS)
118120
SET(LIBTYPE SHARED)
119121
if(PLATFORM_WINDOWS)
@@ -260,8 +262,8 @@ if(PLATFORM_ANDROID)
260262

261263
ExternalProject_Add(OPENSSL
262264
SOURCE_DIR ${OPENSSL_SOURCE_DIR}
263-
URL http://www.openssl.org/source/openssl-1.0.2a.tar.gz
264-
URL_MD5 a06c547dac9044161a477211049f60ef
265+
URL http://www.openssl.org/source/openssl-1.0.2d.tar.gz
266+
URL_MD5 38dd619b2e77cbac69b99f52a053d25a
265267
UPDATE_COMMAND cd ${CMAKE_SOURCE_DIR} && python android-build/configure_openssl_cmake.py # openssl does not have cmake files, this script fixes that
266268
CMAKE_ARGS
267269
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
@@ -303,7 +305,7 @@ if(PLATFORM_ANDROID)
303305
DEPENDS OPENSSL ZLIB
304306
SOURCE_DIR ${CURL_SOURCE_DIR}
305307
GIT_REPOSITORY https://github.com/bagder/curl.git
306-
GIT_TAG ff83742 # 7.41.0
308+
GIT_TAG 38e0788 # 7.43.0
307309
CMAKE_ARGS
308310
-C ${CMAKE_SOURCE_DIR}/android-build/CurlAndroidCrossCompile.cmake
309311
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
@@ -330,6 +332,7 @@ endif()
330332
if(PLATFORM_WINDOWS)
331333
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
332334
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
335+
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
333336
endif()
334337

335338
# default libraries to link in per-platform
@@ -346,10 +349,7 @@ elseif(PLATFORM_ANDROID)
346349
set(PLATFORM_DEP_LIBS curl ssl crypto ${ZLIB_LIBRARY_DIR}/${ZLIB_NAME}.a log atomic)
347350
endif()
348351

349-
if(NOT BRAZIL_BUILD)
350-
set(GENERATE_VERSION_INFO 1)
351-
endif()
352-
352+
#sdks
353353
add_subdirectory(aws-cpp-sdk-core)
354354
add_subdirectory(testing-resources)
355355
add_subdirectory(aws-cpp-sdk-dynamodb)
@@ -359,14 +359,13 @@ add_subdirectory(aws-cpp-sdk-sqs)
359359
add_subdirectory(aws-cpp-sdk-kinesis)
360360
add_subdirectory(aws-cpp-sdk-lambda)
361361
add_subdirectory(aws-cpp-sdk-s3)
362-
add_subdirectory(aws-cpp-sdk-elasticbeanstalk)
363362
add_subdirectory(aws-cpp-sdk-mobileanalytics)
364363
add_subdirectory(aws-cpp-sdk-elasticloadbalancing)
365364
add_subdirectory(aws-cpp-sdk-opsworks)
366365
add_subdirectory(aws-cpp-sdk-cloudfront)
367366
add_subdirectory(aws-cpp-sdk-kms)
368367
add_subdirectory(aws-cpp-sdk-codedeploy)
369-
#add_subdirectory(aws-cpp-sdk-redshift)
368+
add_subdirectory(aws-cpp-sdk-redshift)
370369
add_subdirectory(aws-cpp-sdk-iam)
371370
add_subdirectory(aws-cpp-sdk-ecs)
372371
add_subdirectory(aws-cpp-sdk-datapipeline)
@@ -388,6 +387,13 @@ add_subdirectory(aws-cpp-sdk-access-management)
388387
add_subdirectory(aws-cpp-sdk-transfer)
389388
add_subdirectory(aws-cpp-sdk-queues)
390389

390+
if(NOT PLATFORM_ANDROID)
391+
# the EventSeverity::DEBUG entry doesn't compile on android because DEBUG is #defined
392+
# ToDo: fix the client generator to map DEBUG to something else
393+
add_subdirectory(aws-cpp-sdk-elasticbeanstalk)
394+
endif()
395+
396+
#testing
391397
if(PLATFORM_ANDROID)
392398
add_subdirectory(android-unified-tests)
393399
else()
@@ -400,6 +406,7 @@ else()
400406
add_subdirectory(aws-cpp-sdk-identity-management-tests)
401407
add_subdirectory(aws-cpp-sdk-logging-tests)
402408
add_subdirectory(aws-cpp-sdk-transfer-tests)
409+
add_subdirectory(aws-cpp-sdk-redshift-integration-tests)
403410

404411
if(PLATFORM_WINDOWS)
405412
add_subdirectory(aws-cpp-sdk-wininet-winhttp-test)

android-build/build_and_test_android.py

+10
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def ParseArguments():
2121
parser.add_argument("--avd", action="store")
2222
parser.add_argument("--nobuild", action="store_true")
2323
parser.add_argument("--noinstall", action="store_true")
24+
parser.add_argument("--notest", action="store_true")
2425
parser.add_argument("--credentials", action="store")
2526
parser.add_argument("--build", action="store")
2627
args = vars( parser.parse_args() )
@@ -34,6 +35,7 @@ def ParseArguments():
3435
argMap[ "noInstall" ] = args[ "noinstall" ]
3536
argMap[ "credentialsFile" ] = args[ "credentials" ] or "android-build/credentials"
3637
argMap[ "buildType" ] = args[ "build" ] or "Debug"
38+
argMap[ "noTests" ] = args[ "notest" ]
3739

3840
return argMap
3941

@@ -154,6 +156,8 @@ def BuildNative(abi, clean, buildDir, jniDir, installDir, buildType):
154156
os.mkdir( buildDir )
155157
os.chdir( buildDir )
156158
subprocess.check_call( [ "cmake",
159+
"-DSTATIC_LINKING=1",
160+
"-DCUSTOM_MEMORY_MANAGEMENT=1",
157161
"-DANDROID_STL=gnustl_static",
158162
"-DANDROID_STL_FORCE_FEATURES=OFF",
159163
"-DTARGET_ARCH=ANDROID",
@@ -317,6 +321,7 @@ def Main():
317321
credentialsFile = args[ "credentialsFile" ]
318322
buildType = args[ "buildType" ]
319323
noInstall = args[ "noInstall" ]
324+
noTests = args[ "noTests" ]
320325

321326
buildDir = "_build" + buildType
322327
installDir = os.path.join( "external", abi );
@@ -327,6 +332,9 @@ def Main():
327332
BuildNative(abi, clean, buildDir, jniDir, installDir, buildType)
328333
BuildJava(clean)
329334

335+
if noTests:
336+
return 0
337+
330338
print("Starting emulator...")
331339
InitializeEmulator(avd, useExistingEmu)
332340

@@ -337,6 +345,8 @@ def Main():
337345
print("Installing certs...")
338346
BuildAndInstallCertSet("android-build", buildDir)
339347

348+
# don't forget: SSL verification is on for all tests and so if you want the integration tests to work you need
349+
# to set the capath in the curl client temporarily since the emulator's cert set is crap and will not validate aws sites
340350
print("Running tests...")
341351
RunTests()
342352

android-unified-tests/CMakeLists.txt

+16-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,13 @@ file(GLOB S3_SRC "${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-s3-integration-tests/Bucket
1919
file(GLOB LAMBDA_SRC "${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-lambda-integration-tests/FunctionTest.cpp")
2020
file(GLOB COGNITO_IDENTITY_IDENTITY_POOL_SRC "${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-cognitoidentity-integration-tests/IdentityPoolOperationTest.cpp")
2121
file(GLOB COGNITO_IDENTITY_CREDENTIALS_SRC "${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-cognitoidentity-integration-tests/GetCredentialsTest.cpp")
22+
file(GLOB TRANSFER_RESOURCE_SRC "${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-transfer-tests/ResourceTests.cpp")
23+
file(GLOB TRANSFER_SRC "${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-transfer-tests/TransferTests.cpp")
24+
file(GLOB LOGGING_SRC "${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-logging-tests/LoggingTest.cpp")
25+
file(GLOB IDENTITY_MANAGEMENT_SRC "${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-identity-management-tests/auth/*.cpp")
2226
file(GLOB TEST_SRC "${CMAKE_CURRENT_SOURCE_DIR}/RunTests.cpp")
2327

28+
# commented-out tests are not working on android yet
2429
file(GLOB AWS_UNIFIED_INTEGRATION_TESTS_SRC
2530
${CORE_AWS_SRC}
2631
${CORE_AWS_AUTH_SRC}
@@ -35,9 +40,13 @@ file(GLOB AWS_UNIFIED_INTEGRATION_TESTS_SRC
3540
${DYNAMODB_SRC}
3641
${SQS_SRC}
3742
${S3_SRC}
38-
${LAMBDA_SRC}
43+
# ${LAMBDA_SRC}
3944
${COGNITO_IDENTITY_IDENTITY_POOL_SRC}
4045
${COGNITO_IDENTITY_CREDENTIALS_SRC}
46+
${TRANSFER_RESOURCE_SRC}
47+
# ${TRANSFER_SRC}
48+
${LOGGING_SRC}
49+
# ${IDENTITY_MANAGEMENT_SRC}
4150
${TEST_SRC}
4251
)
4352

@@ -53,6 +62,9 @@ set(AWS_UNIFIED_INTEGRATION_TEST_APPLICATION_INCLUDES
5362
"${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-lambda/include/"
5463
"${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-kinesis/include/"
5564
"${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-cognito-identity/include/"
65+
"${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-transfer/include/"
66+
"${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-logging/include/"
67+
"${AWS_NATIVE_SDK_ROOT}/aws-cpp-sdk-identity-management/include/"
5668
"${AWS_NATIVE_SDK_ROOT}/testing-resources/include/"
5769
)
5870

@@ -70,6 +82,9 @@ target_link_libraries(android-unified-tests
7082
aws-cpp-sdk-lambda
7183
aws-cpp-sdk-kinesis
7284
aws-cpp-sdk-cognito-identity
85+
aws-cpp-sdk-transfer
86+
aws-cpp-sdk-logging
87+
aws-cpp-sdk-identity-management
7388
testing-resources
7489
aws-cpp-sdk-core
7590
${PLATFORM_DEP_LIBS})

aws-cpp-sdk-access-management/include/aws/access-management/AccessManagementClient.h

+5-4
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,15 @@ class AWS_ACCESS_MANAGEMENT_API AccessManagementClient
7070

7171
using PolicyGeneratorFunction = std::function< Aws::String(void) >;
7272

73+
// Misc
74+
static Aws::String ExtractAccountIdFromArn(const Aws::String& arn);
75+
7376
// Compound Operation API for IAM
7477
bool GetOrCreateGroup (const Aws::String& groupName, Aws::IAM::Model::Group& groupData);
7578
bool GetOrCreatePolicy(const Aws::String& policyName, const PolicyGeneratorFunction& policyGenerator, Aws::IAM::Model::Policy& policyData);
7679
bool GetOrCreateRole (const Aws::String& roleName, const PolicyGeneratorFunction& assumedPolicyGenerator, Aws::IAM::Model::Role& roleData);
7780
bool GetOrCreateUser (const Aws::String& userName, Aws::IAM::Model::User& userData);
81+
Aws::String GetAccountId();
7882

7983
bool AttachPolicyToGroupIfNot(const Aws::IAM::Model::Policy& policyData, const Aws::String& groupName);
8084
bool AttachPolicyToRoleIfNot (const Aws::IAM::Model::Policy& policyData, const Aws::String& roleName);
@@ -125,10 +129,7 @@ class AWS_ACCESS_MANAGEMENT_API AccessManagementClient
125129
bool DeleteGroup (const Aws::String& groupName);
126130
bool DeletePolicy(const Aws::String& policyName);
127131
bool DeleteRole (const Aws::String& roleName);
128-
bool DeleteUser (const Aws::String& userName);
129-
130-
// Misc
131-
Aws::String ExtractAccountIdFromArn(const Aws::String& arn);
132+
bool DeleteUser (const Aws::String& userName);
132133

133134
bool DoesCredentialsFileExist (const Aws::String& credentialsFilename);
134135
bool CreateCredentialsFileForUser(const Aws::String& credentialsFilename, const Aws::String& userName);

aws-cpp-sdk-access-management/source/AccessManagementClient.cpp

+17-1
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,10 @@ QueryResult AccessManagementClient::GetRole(const Aws::String& roleName, Aws::IA
209209
QueryResult AccessManagementClient::GetUser(const Aws::String& userName, Aws::IAM::Model::User& userData)
210210
{
211211
GetUserRequest getUserRequest;
212-
getUserRequest.SetUserName(userName);
212+
if (!userName.empty())
213+
{
214+
getUserRequest.SetUserName(userName);
215+
}
213216

214217
auto outcome = m_iamClient->GetUser(getUserRequest);
215218
if (!outcome.IsSuccess())
@@ -1527,6 +1530,19 @@ bool AccessManagementClient::GetOrCreateUser(const Aws::String& userName, Aws::I
15271530
return false;
15281531
}
15291532

1533+
Aws::String AccessManagementClient::GetAccountId()
1534+
{
1535+
Aws::IAM::Model::User user;
1536+
auto queryResult = GetUser("", user);
1537+
1538+
if (queryResult == QueryResult::YES)
1539+
{
1540+
return ExtractAccountIdFromArn(user.GetArn());
1541+
}
1542+
1543+
return "";
1544+
}
1545+
15301546
bool AccessManagementClient::AttachPolicyToGroupIfNot(const Policy& policyData, const Aws::String& groupName)
15311547
{
15321548
auto result = IsPolicyAttachedToGroup(policyData.GetPolicyName(), groupName);

aws-cpp-sdk-autoscaling/source/model/AttachInstancesRequest.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Aws::String AttachInstancesRequest::SerializePayload() const
3434
unsigned instanceIdsCount = 1;
3535
for(auto& item : m_instanceIds)
3636
{
37-
ss << "InstanceIds." << instanceIdsCount << "="
37+
ss << "InstanceIds.member." << instanceIdsCount << "="
3838
<< StringUtils::URLEncode(item.c_str()) << "&";
3939
instanceIdsCount++;
4040
}

aws-cpp-sdk-autoscaling/source/model/AttachLoadBalancersRequest.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Aws::String AttachLoadBalancersRequest::SerializePayload() const
3838
unsigned loadBalancerNamesCount = 1;
3939
for(auto& item : m_loadBalancerNames)
4040
{
41-
ss << "LoadBalancerNames." << loadBalancerNamesCount << "="
41+
ss << "LoadBalancerNames.member." << loadBalancerNamesCount << "="
4242
<< StringUtils::URLEncode(item.c_str()) << "&";
4343
loadBalancerNamesCount++;
4444
}

0 commit comments

Comments
 (0)