Download src/validation.adb from Snapkitty/sovereign-ada-rtx: direct link, hf CLI and curl.
- Browser
- Download file 4.5 kB
-
https://huggingface.co/Snapkitty/sovereign-ada-rtx/resolve/main/src/validation.adb
- Command line
-
hf download hf://Snapkitty/sovereign-ada-rtx/src/validation.adb
-
curl -L -o validation.adb https://huggingface.co/Snapkitty/sovereign-ada-rtx/resolve/main/src/validation.adb
4.5 kB
| with Core_Types; use Core_Types; | |
| with Errors; | |
| with Config; | |
| package body Validation is | |
| function Validate_Buffer_Length (Len : Length_Type; Max : Length_Type) return Status_Code is | |
| begin if Len > Max then return Buffer_Overflow; end if; return Success; end Validate_Buffer_Length; | |
| function Validate_Byte_Range (V : Integer) return Status_Code is | |
| begin if V < 0 or else V > 255 then return Out_Of_Range; end if; return Success; end Validate_Byte_Range; | |
| function Validate_Word16_Range (V : Integer) return Status_Code is | |
| begin if V < 0 or else V > 65535 then return Out_Of_Range; end if; return Success; end Validate_Word16_Range; | |
| function Validate_Word32_Range (V : Long_Long_Integer) return Status_Code is | |
| begin if V < 0 or else V > Long_Long_Integer (Word32'Last) then return Out_Of_Range; end if; return Success; end Validate_Word32_Range; | |
| function Validate_Data_Item (Item : Data_Item) return Status_Code is | |
| begin if not Item.Valid or else Item.Id = 0 then return Invalid_Input; end if; return Success; end Validate_Data_Item; | |
| function Validate_Command_Args (Cmd : Command_Id; Args : Byte_Array; Cfg : Config.Configuration) return Status_Code is | |
| Max_Len : Length_Type := Config.Get_Max_Length (Cfg); | |
| begin | |
| if Args'Length > Natural (Max_Len) then return Buffer_Overflow; end if; | |
| case Cmd is | |
| when Cmd_None | Cmd_Help | Cmd_Query_State | Cmd_Self_Test | Cmd_Reset | Cmd_Exit => | |
| if Args'Length > 0 then return Invalid_Input; end if; | |
| when Cmd_Set_Config => if Args'Length < 2 then return Invalid_Input; end if; | |
| when Cmd_Process_Data => if Args'Length = 0 then return Invalid_Input; end if; | |
| when Cmd_Serialize | Cmd_Verify => null; | |
| when Cmd_Authorize => if Args'Length < 1 then return Invalid_Input; end if; | |
| end case; | |
| return Success; | |
| end Validate_Command_Args; | |
| function Validate_State_Transition (From : App_State; To : App_State) return Status_Code is | |
| begin | |
| case From is | |
| when Idle => if To = Initializing or To = Shutdown or To = Error_State then return Success; end if; | |
| when Initializing => if To = Configured or To = Error_State then return Success; end if; | |
| when Configured => if To = Awaiting_Input or To = Error_State or To = Shutdown then return Success; end if; | |
| when Awaiting_Input => if To = Parsing or To = Error_State or To = Shutdown then return Success; end if; | |
| when Parsing => if To = Validating or To = Error_State then return Success; end if; | |
| when Validating => if To = Processing or To = Error_State then return Success; end if; | |
| when Processing => if To = Serializing or To = Checking_Integrity or To = Authorized or To = Awaiting_Input or To = Error_State then return Success; end if; | |
| when Serializing => if To = Checking_Integrity or To = Awaiting_Input or To = Error_State then return Success; end if; | |
| when Checking_Integrity => if To = Authorized or To = Awaiting_Input or To = Error_State then return Success; end if; | |
| when Authorized => if To = Awaiting_Input or To = Processing or To = Shutdown or To = Error_State then return Success; end if; | |
| when Error_State => if To = Idle or To = Shutdown or To = Awaiting_Input then return Success; end if; | |
| when Shutdown => return State_Error; | |
| end case; | |
| return State_Error; | |
| end Validate_State_Transition; | |
| function Validate_Serialized_Header (Hdr : Serial_Header) return Status_Code is | |
| begin | |
| if Hdr.Magic /= 16#ADA1# then return Integrity_Failure; end if; | |
| if Hdr.Version = 0 or Hdr.Version > 2 then return Invalid_Input; end if; | |
| if Hdr.Length > Max_Serial_Record_Size then return Buffer_Overflow; end if; | |
| return Success; | |
| end Validate_Serialized_Header; | |
| function Validate_Auth_Required (Level_Required : Auth_Level; Current : Auth_Level) return Status_Code is | |
| begin if Current < Level_Required then return Authorization_Denied; end if; return Success; end Validate_Auth_Required; | |
| procedure Validate_And_Set_Error (St : Status_Code; Log : in out Errors.Error_Log; Msg : String := "") is | |
| begin if St /= Success then Errors.Set_Error (Log, St, 0, Msg); end if; end Validate_And_Set_Error; | |
| function Is_Valid_Transition (From : App_State; To : App_State) return Boolean is | |
| begin return Validate_State_Transition (From, To) = Success; end Is_Valid_Transition; | |
| end Validation; | |