1- package com .PathInjection ;
2-
31import software .amazon .awssdk .transfer .s3 .S3TransferManager ;
4- import software .amazon .awssdk .transfer .s3 .model .*;
2+ import software .amazon .awssdk .transfer .s3 .model .UploadFileRequest ;
3+ import software .amazon .awssdk .transfer .s3 .model .FileUpload ;
4+ import software .amazon .awssdk .transfer .s3 .model .FileDownload ;
5+ import software .amazon .awssdk .transfer .s3 .model .DirectoryUpload ;
6+ import software .amazon .awssdk .transfer .s3 .model .CompletedDirectoryUpload ;
7+ import software .amazon .awssdk .transfer .s3 .model .DirectoryDownload ;
8+ import software .amazon .awssdk .transfer .s3 .model .CompletedDirectoryDownload ;
9+ import software .amazon .awssdk .transfer .s3 .model .DownloadDirectoryRequest ;
10+ import software .amazon .awssdk .transfer .s3 .model .DownloadFileRequest ;
11+ import software .amazon .awssdk .transfer .s3 .model .ResumableFileUpload ;
12+ import software .amazon .awssdk .transfer .s3 .model .UploadDirectoryRequest ;
13+ import software .amazon .awssdk .transfer .s3 .model .ResumableFileDownload ;
14+ import software .amazon .awssdk .transfer .s3 .model .CompletedFileUpload ;
15+ import software .amazon .awssdk .transfer .s3 .model .CompletedFileDownload ;
516import software .amazon .awssdk .transfer .s3 .progress .LoggingTransferListener ;
617
7- import java .net .MalformedURLException ;
818import java .net .URI ;
9- import java .net .URISyntaxException ;
1019import java .nio .file .Paths ;
1120
12- public class S3PathInjection {
21+ public class AmazonS3 {
1322 S3TransferManager transferManager = S3TransferManager .create ();
1423 String bucketName = "bucketTest" ;
1524 String key = "keyTest" ;
@@ -19,7 +28,7 @@ public String uploadFile(URI filePathURI) {
1928 UploadFileRequest .builder ()
2029 .putObjectRequest (b -> b .bucket (this .bucketName ).key (this .key ))
2130 .addTransferListener (LoggingTransferListener .create ())
22- .source (Paths .get (filePathURI )) // $ hasTaintFlow
31+ .source (Paths .get (filePathURI )) // $ hasTaintFlow="get(...)"
2332 .build ();
2433
2534 FileUpload fileUpload = this .transferManager .uploadFile (uploadFileRequest );
@@ -33,18 +42,18 @@ public String uploadFileResumable(URI filePathURI) {
3342 UploadFileRequest .builder ()
3443 .putObjectRequest (b -> b .bucket (this .bucketName ).key (this .key ))
3544 .addTransferListener (LoggingTransferListener .create ())
36- .source (Paths .get (filePathURI )) // $ hasTaintFlow
45+ .source (Paths .get (filePathURI )) // $ hasTaintFlow="get(...)"
3746 .build ();
3847
3948 // Initiate the transfer
4049 FileUpload upload = this .transferManager .uploadFile (uploadFileRequest );
4150 // Pause the upload
4251 ResumableFileUpload resumableFileUpload = upload .pause ();
4352 // Optionally, persist the resumableFileUpload
44- resumableFileUpload .serializeToFile (Paths .get (filePathURI )); // $ hasTaintFlow
53+ resumableFileUpload .serializeToFile (Paths .get (filePathURI )); // $ hasTaintFlow="get(...)"
4554 // Retrieve the resumableFileUpload from the file
4655 ResumableFileUpload persistedResumableFileUpload =
47- ResumableFileUpload .fromFile (Paths .get (filePathURI )); // $ hasTaintFlow
56+ ResumableFileUpload .fromFile (Paths .get (filePathURI )); // $ hasTaintFlow="get(...)"
4857 // Resume the upload
4958 FileUpload resumedUpload = this .transferManager .resumeUploadFile (persistedResumableFileUpload );
5059 // Wait for the transfer to complete
@@ -59,18 +68,18 @@ public String downloadFileResumable(URI downloadedFileWithPath) {
5968 DownloadFileRequest .builder ()
6069 .getObjectRequest (b -> b .bucket (this .bucketName ).key (this .key ))
6170 .addTransferListener (LoggingTransferListener .create ())
62- .destination (Paths .get (downloadedFileWithPath )) // $ hasTaintFlow
71+ .destination (Paths .get (downloadedFileWithPath )) // $ hasTaintFlow="get(...)"
6372 .build ();
6473
6574 // Initiate the transfer
6675 FileDownload download = this .transferManager .downloadFile (downloadFileRequest );
6776 // Pause the download
6877 ResumableFileDownload resumableFileDownload = download .pause ();
6978 // Optionally, persist the resumableFileDownload
70- resumableFileDownload .serializeToFile (Paths .get (downloadedFileWithPath )); // $ hasTaintFlow
79+ resumableFileDownload .serializeToFile (Paths .get (downloadedFileWithPath )); // $ hasTaintFlow="get(...)"
7180 // Retrieve the resumableFileDownload from the file
7281 ResumableFileDownload persistedResumableFileDownload =
73- ResumableFileDownload .fromFile (Paths .get (downloadedFileWithPath )); // $ hasTaintFlow
82+ ResumableFileDownload .fromFile (Paths .get (downloadedFileWithPath )); // $ hasTaintFlow="get(...)"
7483 // Resume the download
7584 FileDownload resumedDownload =
7685 this .transferManager .resumeDownloadFile (persistedResumableFileDownload );
@@ -85,7 +94,7 @@ public Integer uploadDirectory(URI sourceDirectory) {
8594 DirectoryUpload directoryUpload =
8695 this .transferManager .uploadDirectory (
8796 UploadDirectoryRequest .builder ()
88- .source (Paths .get (sourceDirectory )) // $ hasTaintFlow
97+ .source (Paths .get (sourceDirectory )) // $ hasTaintFlow="get(...)"
8998 .bucket (this .bucketName )
9099 .build ());
91100
@@ -98,7 +107,7 @@ public Long downloadFile(String downloadedFileWithPath) {
98107 DownloadFileRequest .builder ()
99108 .getObjectRequest (b -> b .bucket (this .bucketName ).key (this .key ))
100109 .addTransferListener (LoggingTransferListener .create ())
101- .destination (Paths .get (downloadedFileWithPath )) // $ hasTaintFlow
110+ .destination (Paths .get (downloadedFileWithPath )) // $ hasTaintFlow="get(...)"
102111 .build ();
103112
104113 FileDownload downloadFile = this .transferManager .downloadFile (downloadFileRequest );
@@ -111,7 +120,7 @@ public Integer downloadObjectsToDirectory(URI destinationPathURI) {
111120 DirectoryDownload directoryDownload =
112121 this .transferManager .downloadDirectory (
113122 DownloadDirectoryRequest .builder ()
114- .destination (Paths .get (destinationPathURI )) // $ hasTaintFlow
123+ .destination (Paths .get (destinationPathURI )) // $ hasTaintFlow="get(...)"
115124 .bucket (this .bucketName )
116125 .build ());
117126 CompletedDirectoryDownload completedDirectoryDownload =
0 commit comments