Comparison

mod_http_oauth2/mod_http_oauth2.lua @ 6308:e1c54de06905

mod_http_oauth2: Handle case of device state having expired If for some reason the `code` was nil, it would have thrown an error attempting to index it.
author Kim Alvefur <zash@zash.se>
date Fri, 13 Jun 2025 21:57:38 +0200
parent 6307:aae94f82c56e
child 6309:342f88e8d522
child 6317:8108aec64fb9
comparison
equal deleted inserted replaced
6307:aae94f82c56e 6308:e1c54de06905
794 if redirect_uri == device_uri then 794 if redirect_uri == device_uri then
795 local is_device, device_state = verify_device_token(params.state); 795 local is_device, device_state = verify_device_token(params.state);
796 if is_device then 796 if is_device then
797 local device_code = b64url(hashes.hmac_sha256(verification_key, device_state.user_code)); 797 local device_code = b64url(hashes.hmac_sha256(verification_key, device_state.user_code));
798 local code = codes:get("device_code:" .. params.client_id .. "#" .. device_code); 798 local code = codes:get("device_code:" .. params.client_id .. "#" .. device_code);
799 code.error = err; 799 if type(code) == "table" then
800 code.expires = os.time() + 60; 800 code.error = err;
801 codes:set("device_code:" .. params.client_id .. "#" .. device_code, code); 801 code.expires = os.time() + 60;
802 codes:set("device_code:" .. params.client_id .. "#" .. device_code, code);
803 end
802 end 804 end
803 return render_error(err); 805 return render_error(err);
804 end 806 end
805 local redirect_query = url.parse(redirect_uri); 807 local redirect_query = url.parse(redirect_uri);
806 local sep = redirect_query.query and "&" or "?"; 808 local sep = redirect_query.query and "&" or "?";