zdb should not output binary data on terminal
The zdb is interpreting byte array as textual string in dump_zap, but there are also binary arrays and we should not output binary data on terminal. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Igor Kozhukhov <igor@dilos.org> Signed-off-by: Toomas Soome <tsoome@me.com> External-issue: https://www.illumos.org/issues/12012 External-issue: https://www.illumos.org/issues/11713 Closes #11006
This commit is contained in:
parent
106627caa7
commit
cfb602125e
|
@ -1120,7 +1120,21 @@ dump_zap(objset_t *os, uint64_t object, void *data, size_t size)
|
|||
(void) zap_lookup(os, object, attr.za_name,
|
||||
attr.za_integer_length, attr.za_num_integers, prop);
|
||||
if (attr.za_integer_length == 1) {
|
||||
(void) printf("%s", (char *)prop);
|
||||
if (strcmp(attr.za_name,
|
||||
DSL_CRYPTO_KEY_MASTER_KEY) == 0 ||
|
||||
strcmp(attr.za_name,
|
||||
DSL_CRYPTO_KEY_HMAC_KEY) == 0 ||
|
||||
strcmp(attr.za_name, DSL_CRYPTO_KEY_IV) == 0 ||
|
||||
strcmp(attr.za_name, DSL_CRYPTO_KEY_MAC) == 0 ||
|
||||
strcmp(attr.za_name, DMU_POOL_CHECKSUM_SALT) == 0) {
|
||||
uint8_t *u8 = prop;
|
||||
|
||||
for (i = 0; i < attr.za_num_integers; i++) {
|
||||
(void) printf("%02x", u8[i]);
|
||||
}
|
||||
} else {
|
||||
(void) printf("%s", (char *)prop);
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < attr.za_num_integers; i++) {
|
||||
switch (attr.za_integer_length) {
|
||||
|
|
Loading…
Reference in New Issue