return 0;
}
+/* Max string input length is a precaution against abuse and to detect junk
+ input easier and better. */
+#define CURL_MAX_INPUT_LENGTH 8000000
+
OM_uint32 Curl_gss_import_name_a(OM_uint32 *minor_status, gss_buffer_t in_name,
gss_OID in_name_type, gss_name_t *out_name)
{
return gss_import_name(minor_status, in_name, in_name_type, out_name);
memcpy((char *)&in, (char *)in_name, sizeof(in));
- i = in.length;
+ if(in.length > CURL_MAX_INPUT_LENGTH) {
+ if(minor_status)
+ /* !checksrc! disable ERRNOVAR 1 */
+ *minor_status = ENOMEM;
+
+ return GSS_S_FAILURE;
+ }
+ i = (unsigned int)in.length;
in.value = malloc(i + 1);
if(!in.value) {
if(inp) {
if(inp->length && inp->value) {
- unsigned int i = inp->length;
+ unsigned int i;
+ if(inp->length > CURL_MAX_INPUT_LENGTH) {
+ if(minor_status)
+ /* !checksrc! disable ERRNOVAR 1 */
+ *minor_status = ENOMEM;
+ return GSS_S_FAILURE;
+ }
+ i = (unsigned int)inp->length;
in.value = malloc(i + 1);
if(!in.value) {
if(minor_status)