frida/
error.rs

1/*
2 * Copyright © 2022 Jean Marchand
3 *
4 * Licence: wxWindows Library Licence, Version 3.1
5 */
6
7use thiserror::Error;
8
9/// Custom `Error` for Frida
10#[derive(Error, Debug)]
11pub enum Error {
12    /// Failed to attach to a device.
13    #[error("Failed to attach")]
14    DeviceAttachError,
15
16    /// Failled to lookup a device.
17    #[error("Failed to lookup device")]
18    DeviceLookupFailed,
19
20    /// Failed to detach a session.
21    #[error("Failed to detach the current session")]
22    SessionDetachError,
23
24    /// Failed to create a script in a session.
25    #[error("Failed to create the script")]
26    ScriptCreationError,
27
28    /// Failled to load a script in a session.
29    #[error("Failed to load the script")]
30    LoadingFailed,
31
32    /// Failed to unload a script in a session.
33    #[error("Failed to unload the script")]
34    UnloadingFailed,
35
36    /// CString conversion failed.
37    #[error("Failed to convert the string into CString")]
38    CStringFailed,
39
40    /// Failed to inject library
41    #[error("Failed to inject library ({code}) {message}")]
42    InjectFailed {
43        /// Error code
44        code: i32,
45        /// Error message
46        message: String,
47    },
48
49    /// Failed to query device parameters
50    #[error("Failed to query device system parameters ({code}) {message}")]
51    DeviceQuerySystemParametersFailed {
52        /// Error code
53        code: i32,
54        /// Error message
55        message: String,
56    },
57
58    /// Failed to spawn program
59    #[error("Failed to spawn program ({code}) {message}")]
60    SpawnFailed {
61        /// Error code
62        code: i32,
63        /// Error message
64        message: String,
65    },
66
67    /// Failed to resume
68    #[error("Failed to resume ({code}) {message}")]
69    ResumeFailed {
70        /// Error code
71        code: i32,
72        /// Error message
73        message: String,
74    },
75
76    /// Failed to kill
77    #[error("Failed to kill PID ({code}) {message}")]
78    KillFailed {
79        /// Error code
80        code: i32,
81        /// Error message
82        message: String,
83    },
84
85    /// Received unexpected RPC message.
86    #[error("Unexpected RPC message received.")]
87    RpcUnexpectedMessage,
88
89    /// RPC JavaScript Error. The RPC communication was
90    /// successful but there was an error in the JavaScript side
91    #[error("Error on the JavaScript side: {message}")]
92    RpcJsError {
93        /// Error message from JavaScript.
94        message: String,
95    },
96}