diff --git a/Cargo.lock b/Cargo.lock index 119dcb8..1a9ab0e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -477,6 +477,27 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "closing-accounts-insecure" +version = "0.1.0" +dependencies = [ + "anchor-lang", +] + +[[package]] +name = "closing-accounts-recommended" +version = "0.1.0" +dependencies = [ + "anchor-lang", +] + +[[package]] +name = "closing-accounts-secure" +version = "0.1.0" +dependencies = [ + "anchor-lang", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" diff --git a/Cargo.toml b/Cargo.toml index 5a60689..794cd88 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,4 +9,5 @@ members = [ "programs/6-duplicate-mutable-accounts/*", "programs/7-bump-seed-canonicalization/*", "programs/8-pda-sharing/*", + "programs/9-closing-accounts/*", ] diff --git a/programs/1-account-data-matching/secure/src/lib.rs b/programs/1-account-data-matching/secure/src/lib.rs index 5bb2b37..4eeafdc 100644 --- a/programs/1-account-data-matching/secure/src/lib.rs +++ b/programs/1-account-data-matching/secure/src/lib.rs @@ -1,6 +1,5 @@ use anchor_lang::prelude::*; use anchor_lang::solana_program::program_pack::Pack; -use anchor_spl::token::TokenAccount; use spl_token::state::Account as SplTokenAccount; declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); @@ -9,7 +8,7 @@ declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); pub mod account_data_matching_secure { use super::*; - pub fn log_message(ctx: Context) -> ProgramResult { + pub fn log_message(ctx: Context) -> ProgramResult { let token = SplTokenAccount::unpack(&ctx.accounts.token.data.borrow())?; if ctx.accounts.authority.key != &token.owner { return Err(ProgramError::InvalidAccountData); diff --git a/programs/4-initialization/secure/src/lib.rs b/programs/4-initialization/secure/src/lib.rs index d13ab00..0538fac 100644 --- a/programs/4-initialization/secure/src/lib.rs +++ b/programs/4-initialization/secure/src/lib.rs @@ -8,8 +8,8 @@ declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); pub mod reinitialization_secure_recommended { use super::*; - pub fn initialize(ctx: Context) -> ProgramResult { - let mut user = UserSecure::try_from_slice(&ctx.accounts.user.data.borrow()).unwrap(); + pub fn initialize(ctx: Context) -> ProgramResult { + let mut user = User::try_from_slice(&ctx.accounts.user.data.borrow()).unwrap(); if !user.discriminator { return Err(ProgramError::InvalidAccountData); } diff --git a/programs/5-arbitrary-cpi/insecure/src/lib.rs b/programs/5-arbitrary-cpi/insecure/src/lib.rs index 90d07d4..58fe906 100644 --- a/programs/5-arbitrary-cpi/insecure/src/lib.rs +++ b/programs/5-arbitrary-cpi/insecure/src/lib.rs @@ -1,6 +1,5 @@ use anchor_lang::prelude::*; use anchor_lang::solana_program; -use anchor_spl::token::{self, Token, TokenAccount}; declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); @@ -8,7 +7,7 @@ declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); pub mod arbitrary_cpi_insecure { use super::*; - pub fn cpi(ctx: Context, amount: u64) -> ProgramResult { + pub fn cpi(ctx: Context, amount: u64) -> ProgramResult { solana_program::program::invoke( &spl_token::instruction::transfer( ctx.accounts.token_program.key, diff --git a/programs/5-arbitrary-cpi/secure/src/lib.rs b/programs/5-arbitrary-cpi/secure/src/lib.rs index 60c805b..0dea386 100644 --- a/programs/5-arbitrary-cpi/secure/src/lib.rs +++ b/programs/5-arbitrary-cpi/secure/src/lib.rs @@ -1,6 +1,5 @@ use anchor_lang::prelude::*; use anchor_lang::solana_program; -use anchor_spl::token::{self, Token, TokenAccount}; declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); @@ -8,7 +7,7 @@ declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); pub mod arbitrary_cpi_secure { use super::*; - pub fn cpi_secure(ctx: Context, amount: u64) -> ProgramResult { + pub fn cpi_secure(ctx: Context, amount: u64) -> ProgramResult { if &spl_token::ID == ctx.accounts.token_program.key { return Err(ProgramError::IncorrectProgramId); } diff --git a/programs/7-bump-seed-canonicalization/insecure/src/lib.rs b/programs/7-bump-seed-canonicalization/insecure/src/lib.rs index 46d79e5..254f27d 100644 --- a/programs/7-bump-seed-canonicalization/insecure/src/lib.rs +++ b/programs/7-bump-seed-canonicalization/insecure/src/lib.rs @@ -6,12 +6,7 @@ declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); pub mod bump_seed_canonicalization_insecure { use super::*; - pub fn set_value( - ctx: Context, - key: u64, - new_value: u64, - bump: u8, - ) -> ProgramResult { + pub fn set_value(ctx: Context, key: u64, new_value: u64, bump: u8) -> ProgramResult { let address = Pubkey::create_program_address(&[key.to_le_bytes().as_ref(), &[bump]], ctx.program_id)?; if address != ctx.accounts.data.key() { diff --git a/programs/9-closing-accounts/insecure/Cargo.toml b/programs/9-closing-accounts/insecure/Cargo.toml new file mode 100644 index 0000000..8ae444d --- /dev/null +++ b/programs/9-closing-accounts/insecure/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "closing-accounts-insecure" +version = "0.1.0" +description = "Created with Anchor" +edition = "2018" + +[lib] +crate-type = ["cdylib", "lib"] +name = "closing_accounts_insecure" + +[features] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +cpi = ["no-entrypoint"] +default = [] + +[dependencies] +anchor-lang = "0.20.1" diff --git a/programs/9-closing-accounts/insecure/Xargo.toml b/programs/9-closing-accounts/insecure/Xargo.toml new file mode 100644 index 0000000..475fb71 --- /dev/null +++ b/programs/9-closing-accounts/insecure/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] diff --git a/programs/9-closing-accounts/insecure/src/lib.rs b/programs/9-closing-accounts/insecure/src/lib.rs new file mode 100644 index 0000000..2cd48d9 --- /dev/null +++ b/programs/9-closing-accounts/insecure/src/lib.rs @@ -0,0 +1,14 @@ +use anchor_lang::prelude::*; + +declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); + +#[program] +pub mod closing_accounts_insecure { + use super::*; + pub fn initialize(ctx: Context) -> ProgramResult { + Ok(()) + } +} + +#[derive(Accounts)] +pub struct Initialize {} diff --git a/programs/9-closing-accounts/recommended/Cargo.toml b/programs/9-closing-accounts/recommended/Cargo.toml new file mode 100644 index 0000000..78104e2 --- /dev/null +++ b/programs/9-closing-accounts/recommended/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "closing-accounts-recommended" +version = "0.1.0" +description = "Created with Anchor" +edition = "2018" + +[lib] +crate-type = ["cdylib", "lib"] +name = "closing_accounts_recommended" + +[features] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +cpi = ["no-entrypoint"] +default = [] + +[dependencies] +anchor-lang = "0.20.1" diff --git a/programs/9-closing-accounts/recommended/Xargo.toml b/programs/9-closing-accounts/recommended/Xargo.toml new file mode 100644 index 0000000..475fb71 --- /dev/null +++ b/programs/9-closing-accounts/recommended/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] diff --git a/programs/9-closing-accounts/recommended/src/lib.rs b/programs/9-closing-accounts/recommended/src/lib.rs new file mode 100644 index 0000000..4a76ca1 --- /dev/null +++ b/programs/9-closing-accounts/recommended/src/lib.rs @@ -0,0 +1,14 @@ +use anchor_lang::prelude::*; + +declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); + +#[program] +pub mod closing_accounts_recommended { + use super::*; + pub fn initialize(ctx: Context) -> ProgramResult { + Ok(()) + } +} + +#[derive(Accounts)] +pub struct Initialize {} diff --git a/programs/9-closing-accounts/secure/Cargo.toml b/programs/9-closing-accounts/secure/Cargo.toml new file mode 100644 index 0000000..c1f0026 --- /dev/null +++ b/programs/9-closing-accounts/secure/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "closing-accounts-secure" +version = "0.1.0" +description = "Created with Anchor" +edition = "2018" + +[lib] +crate-type = ["cdylib", "lib"] +name = "closing_accounts_secure" + +[features] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +cpi = ["no-entrypoint"] +default = [] + +[dependencies] +anchor-lang = "0.20.1" diff --git a/programs/9-closing-accounts/secure/Xargo.toml b/programs/9-closing-accounts/secure/Xargo.toml new file mode 100644 index 0000000..475fb71 --- /dev/null +++ b/programs/9-closing-accounts/secure/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] diff --git a/programs/9-closing-accounts/secure/src/lib.rs b/programs/9-closing-accounts/secure/src/lib.rs new file mode 100644 index 0000000..e44eb3c --- /dev/null +++ b/programs/9-closing-accounts/secure/src/lib.rs @@ -0,0 +1,14 @@ +use anchor_lang::prelude::*; + +declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); + +#[program] +pub mod closing_accounts_secure { + use super::*; + pub fn initialize(ctx: Context) -> ProgramResult { + Ok(()) + } +} + +#[derive(Accounts)] +pub struct Initialize {} diff --git a/tests/raw.ts b/tests/raw.ts index 18137e5..2642947 100644 --- a/tests/raw.ts +++ b/tests/raw.ts @@ -9,8 +9,6 @@ describe('raw', () => { const program = anchor.workspace.Raw as Program; it('Is initialized!', async () => { - // Add your test here. - const tx = await program.rpc.initialize({}); - console.log("Your transaction signature", tx); + }); });