Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[audit] 10. Suboptimal usage of optional vectors & 12. Code deduplication #868

Merged
merged 4 commits into from
Aug 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ci/bootstrap-env/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ fn main() -> Result<()> {
}),
submission_policy: PreProposeSubmissionPolicy::Specific {
dao_members: true,
allowlist: None,
denylist: None,
allowlist: vec![],
denylist: vec![],
},
extension: Empty::default(),
})
Expand Down
4 changes: 2 additions & 2 deletions ci/integration-tests/src/helpers/helper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ pub fn create_dao(
}),
submission_policy: PreProposeSubmissionPolicy::Specific {
dao_members: true,
allowlist: None,
denylist: None,
allowlist: vec![],
denylist: vec![],
},
extension: Empty::default(),
})
Expand Down
4 changes: 0 additions & 4 deletions contracts/external/cw-tokenfactory-issuer/tests/mod.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
// Ignore integration tests for code coverage since there will be problems with dynamic linking libosmosistesttube
// and also, tarpaulin will not be able read coverage out of wasm binary anyway
#![cfg(not(tarpaulin))]

#[cfg(feature = "test-tube")]
mod cases;
#[cfg(feature = "test-tube")]
Expand Down
14 changes: 8 additions & 6 deletions contracts/external/dao-migrator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

Here is the [discussion](https://github.com/DA0-DA0/dao-contracts/discussions/607).

A migrator module for a DAO DAO DAO which handles migration for DAO modules
A migrator module for a DAO DAO DAO which handles migration for DAO modules
and test it went successfully.

DAO core migration is handled by a proposal, which adds this module and do
Expand All @@ -14,6 +14,7 @@ If custom module is found, this TX fails and migration is cancelled, custom
module requires a custom migration to be done by the DAO.

# General idea

1. Proposal is made to migrate DAO core to V2, which also adds this module to the DAO.
2. On init of this contract, a callback is fired to do the migration.
3. Then we check to make sure the DAO doesn't have custom modules.
Expand All @@ -23,9 +24,10 @@ module requires a custom migration to be done by the DAO.
7. In any case where 1 migration fails, we fail the whole TX.

# Important notes
* custom modules cannot reliably be migrated by this contract,
because of that we fail the process to avoid any unwanted results.

* If any module migration fails we fail the whole thing,
this is to make sure that we either have a fully working V2,
or we do nothing and make sure the DAO is operational at any time.
- custom modules cannot reliably be migrated by this contract,
because of that we fail the process to avoid any unwanted results.

- If any module migration fails we fail the whole thing,
this is to make sure that we either have a fully working V2,
or we do nothing and make sure the DAO is operational at any time.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@
},
"additionalProperties": false,
"definitions": {
"Addr": {
"description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.",
"type": "string"
},
"DepositRefundPolicy": {
"oneOf": [
{
Expand Down Expand Up @@ -139,15 +143,15 @@
"properties": {
"anyone": {
"type": "object",
"required": [
"denylist"
],
"properties": {
"denylist": {
"description": "Addresses that may not create proposals.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
}
},
Expand All @@ -166,17 +170,16 @@
"specific": {
"type": "object",
"required": [
"dao_members"
"allowlist",
"dao_members",
"denylist"
],
"properties": {
"allowlist": {
"description": "Addresses that may create proposals.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
},
"dao_members": {
Expand All @@ -185,12 +188,9 @@
},
"denylist": {
"description": "Addresses that may not create proposals, overriding other settings.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
}
},
Expand Down Expand Up @@ -531,6 +531,10 @@
}
],
"definitions": {
"Addr": {
"description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.",
"type": "string"
},
"BankMsg": {
"description": "The message types of the bank module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto",
"oneOf": [
Expand Down Expand Up @@ -1204,15 +1208,15 @@
"properties": {
"anyone": {
"type": "object",
"required": [
"denylist"
],
"properties": {
"denylist": {
"description": "Addresses that may not create proposals.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
}
},
Expand All @@ -1231,17 +1235,16 @@
"specific": {
"type": "object",
"required": [
"dao_members"
"allowlist",
"dao_members",
"denylist"
],
"properties": {
"allowlist": {
"description": "Addresses that may create proposals.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
},
"dao_members": {
Expand All @@ -1250,12 +1253,9 @@
},
"denylist": {
"description": "Addresses that may not create proposals, overriding other settings.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
}
},
Expand Down Expand Up @@ -2328,6 +2328,10 @@
}
],
"definitions": {
"Addr": {
"description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.",
"type": "string"
},
"Empty": {
"description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)",
"type": "object"
Expand All @@ -2344,15 +2348,15 @@
"properties": {
"anyone": {
"type": "object",
"required": [
"denylist"
],
"properties": {
"denylist": {
"description": "Addresses that may not create proposals.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
}
},
Expand All @@ -2371,17 +2375,16 @@
"specific": {
"type": "object",
"required": [
"dao_members"
"allowlist",
"dao_members",
"denylist"
],
"properties": {
"allowlist": {
"description": "Addresses that may create proposals.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
},
"dao_members": {
Expand All @@ -2390,12 +2393,9 @@
},
"denylist": {
"description": "Addresses that may not create proposals, overriding other settings.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
}
},
Expand Down Expand Up @@ -2553,15 +2553,15 @@
"properties": {
"anyone": {
"type": "object",
"required": [
"denylist"
],
"properties": {
"denylist": {
"description": "Addresses that may not create proposals.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
}
},
Expand All @@ -2580,17 +2580,16 @@
"specific": {
"type": "object",
"required": [
"dao_members"
"allowlist",
"dao_members",
"denylist"
],
"properties": {
"allowlist": {
"description": "Addresses that may create proposals.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
},
"dao_members": {
Expand All @@ -2599,12 +2598,9 @@
},
"denylist": {
"description": "Addresses that may not create proposals, overriding other settings.",
"type": [
"array",
"null"
],
"type": "array",
"items": {
"type": "string"
"$ref": "#/definitions/Addr"
}
}
},
Expand Down
Loading
Loading