MCPcopy
hub / github.com/google/clusterfuzz / get

Method get

src/appengine/handlers/download.py:94–150  ·  view source on GitHub ↗

Handle a get request with resource.

(self, resource=None)

Source from the content-addressed store, hash-verified

92 return True
93
94 def get(self, resource=None):
95 """Handle a get request with resource."""
96 testcase = None
97 testcase_id = request.args.get('testcase_id')
98 if not testcase_id and not resource:
99 raise helpers.EarlyExitError('No file requested.', 400)
100
101 if testcase_id:
102 try:
103 testcase = data_handler.get_testcase_by_id(testcase_id)
104 except errors.InvalidTestcaseError:
105 raise helpers.EarlyExitError('Invalid testcase.', 400)
106
107 if not resource:
108 if testcase.minimized_keys and testcase.minimized_keys != 'NA':
109 resource = testcase.minimized_keys
110 else:
111 resource = testcase.fuzzed_keys
112
113 fuzzer_binary_name = None
114 if testcase:
115 fuzzer_binary_name = testcase.get_metadata('fuzzer_binary_name')
116
117 resource = str(urllib.parse.unquote(resource))
118 blob_info = blobs.get_blob_info(resource)
119 if not blob_info:
120 raise helpers.EarlyExitError('File does not exist.', 400)
121
122 if (testcase and testcase.fuzzed_keys != blob_info.key() and
123 testcase.minimized_keys != blob_info.key()):
124 raise helpers.EarlyExitError('Invalid testcase.', 400)
125
126 if (utils.is_oss_fuzz() and testcase and
127 self.check_public_testcase(blob_info, testcase)):
128 # Public OSS-Fuzz testcase.
129 return self._send_blob(
130 blob_info,
131 testcase.key.id(),
132 is_minimized=True,
133 fuzzer_binary_name=fuzzer_binary_name)
134
135 is_minimized = testcase and blob_info.key() == testcase.minimized_keys
136
137 # Testcase blobs require testcase-level access (which enforces the
138 # security_flag privileged-access requirement); general access alone is
139 # only sufficient for non-testcase blobs.
140 if testcase:
141 if not access.can_user_access_testcase(testcase):
142 raise helpers.AccessDeniedError()
143 return self._send_blob(blob_info, testcase_id, is_minimized,
144 fuzzer_binary_name)
145
146 if access.has_access():
147 return self._send_blob(blob_info, testcase_id, is_minimized,
148 fuzzer_binary_name)
149
150 raise helpers.AccessDeniedError()

Callers

nothing calls this directly

Calls 5

check_public_testcaseMethod · 0.95
_send_blobMethod · 0.95
get_metadataMethod · 0.45
keyMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected