@@ -59,13 +59,15 @@ int hpa_dco_status( nwipe_context_t* ptr )
59
59
int dco_line_found ;
60
60
61
61
FILE * fp ;
62
- char path_hdparm_cmd1_get_hpa [] = "hdparm --verbose -N" ;
63
- char path_hdparm_cmd2_get_hpa [] = "/sbin/hdparm --verbose -N" ;
64
- char path_hdparm_cmd3_get_hpa [] = "/usr/bin/hdparm --verbose -N" ;
62
+ char path_hdparm_cmd10_get_hpa [] = "hdparm --verbose -N" ;
63
+ char path_hdparm_cmd20_get_hpa [] = "/sbin/hdparm --verbose -N" ;
64
+ char path_hdparm_cmd30_get_hpa [] = "/usr/bin/hdparm --verbose -N" ;
65
+ char path_hdparm_cmd31_get_hpa [] = "/usr/sbin/hdparm --verbose -N" ;
65
66
66
- char path_hdparm_cmd4_get_dco [] = "hdparm --verbose --dco-identify" ;
67
- char path_hdparm_cmd5_get_dco [] = "/sbin/hdparm --verbose --dco-identify" ;
68
- char path_hdparm_cmd6_get_dco [] = "/usr/bin/hdparm --verbose --dco-identify" ;
67
+ char path_hdparm_cmd40_get_dco [] = "hdparm --verbose --dco-identify" ;
68
+ char path_hdparm_cmd50_get_dco [] = "/sbin/hdparm --verbose --dco-identify" ;
69
+ char path_hdparm_cmd60_get_dco [] = "/usr/bin/hdparm --verbose --dco-identify" ;
70
+ char path_hdparm_cmd61_get_dco [] = "/usr/sbin/hdparm --verbose --dco-identify" ;
69
71
70
72
char pipe_std_err [] = "2>&1" ;
71
73
@@ -78,8 +80,8 @@ int hpa_dco_status( nwipe_context_t* ptr )
78
80
/* Use the longest of the 'path_hdparm_cmd.....' strings above to
79
81
*determine size in the strings below
80
82
*/
81
- char hdparm_cmd_get_hpa [sizeof ( path_hdparm_cmd3_get_hpa ) + sizeof ( c -> device_name ) + sizeof ( pipe_std_err )];
82
- char hdparm_cmd_get_dco [sizeof ( path_hdparm_cmd6_get_dco ) + sizeof ( c -> device_name ) + sizeof ( pipe_std_err )];
83
+ char hdparm_cmd_get_hpa [sizeof ( path_hdparm_cmd30_get_hpa ) + sizeof ( c -> device_name ) + sizeof ( pipe_std_err )];
84
+ char hdparm_cmd_get_dco [sizeof ( path_hdparm_cmd60_get_dco ) + sizeof ( c -> device_name ) + sizeof ( pipe_std_err )];
83
85
84
86
/* Initialise return value */
85
87
set_return_value = 0 ;
@@ -96,25 +98,43 @@ int hpa_dco_status( nwipe_context_t* ptr )
96
98
{
97
99
if ( system ( "which /usr/bin/hdparm > /dev/null 2>&1" ) )
98
100
{
99
- nwipe_log ( NWIPE_LOG_WARNING , "hdparm command not found." );
100
- nwipe_log ( NWIPE_LOG_WARNING ,
101
- "Required by nwipe for HPA/DCO detection & correction and ATA secure erase." );
102
- nwipe_log ( NWIPE_LOG_WARNING , "** Please install hdparm **\n" );
103
- cleanup ();
104
- exit ( 1 );
101
+ if ( system ( "which /usr/sbin/hdparm > /dev/null 2>&1" ) )
102
+ {
103
+ nwipe_log ( NWIPE_LOG_WARNING , "hdparm command not found." );
104
+ nwipe_log ( NWIPE_LOG_WARNING ,
105
+ "Required by nwipe for HPA/DCO detection & correction and ATA secure erase." );
106
+ nwipe_log ( NWIPE_LOG_WARNING , "** Please install hdparm **\n" );
107
+ cleanup ();
108
+ exit ( 1 );
109
+ }
110
+ else
111
+ {
112
+ snprintf ( hdparm_cmd_get_hpa ,
113
+ sizeof ( hdparm_cmd_get_hpa ),
114
+ "%s %s %s\n" ,
115
+ path_hdparm_cmd31_get_hpa ,
116
+ c -> device_name ,
117
+ pipe_std_err );
118
+ snprintf ( hdparm_cmd_get_dco ,
119
+ sizeof ( hdparm_cmd_get_dco ),
120
+ "%s %s %s\n" ,
121
+ path_hdparm_cmd61_get_dco ,
122
+ c -> device_name ,
123
+ pipe_std_err );
124
+ }
105
125
}
106
126
else
107
127
{
108
128
snprintf ( hdparm_cmd_get_hpa ,
109
129
sizeof ( hdparm_cmd_get_hpa ),
110
130
"%s %s %s\n" ,
111
- path_hdparm_cmd3_get_hpa ,
131
+ path_hdparm_cmd30_get_hpa ,
112
132
c -> device_name ,
113
133
pipe_std_err );
114
134
snprintf ( hdparm_cmd_get_dco ,
115
135
sizeof ( hdparm_cmd_get_dco ),
116
136
"%s %s %s\n" ,
117
- path_hdparm_cmd6_get_dco ,
137
+ path_hdparm_cmd60_get_dco ,
118
138
c -> device_name ,
119
139
pipe_std_err );
120
140
}
@@ -124,13 +144,13 @@ int hpa_dco_status( nwipe_context_t* ptr )
124
144
snprintf ( hdparm_cmd_get_hpa ,
125
145
sizeof ( hdparm_cmd_get_hpa ),
126
146
"%s %s %s\n" ,
127
- path_hdparm_cmd2_get_hpa ,
147
+ path_hdparm_cmd20_get_hpa ,
128
148
c -> device_name ,
129
149
pipe_std_err );
130
150
snprintf ( hdparm_cmd_get_dco ,
131
151
sizeof ( hdparm_cmd_get_dco ),
132
152
"%s %s %s\n" ,
133
- path_hdparm_cmd5_get_dco ,
153
+ path_hdparm_cmd50_get_dco ,
134
154
c -> device_name ,
135
155
pipe_std_err );
136
156
}
@@ -140,13 +160,13 @@ int hpa_dco_status( nwipe_context_t* ptr )
140
160
snprintf ( hdparm_cmd_get_hpa ,
141
161
sizeof ( hdparm_cmd_get_hpa ),
142
162
"%s %s %s\n" ,
143
- path_hdparm_cmd1_get_hpa ,
163
+ path_hdparm_cmd10_get_hpa ,
144
164
c -> device_name ,
145
165
pipe_std_err );
146
166
snprintf ( hdparm_cmd_get_dco ,
147
167
sizeof ( hdparm_cmd_get_dco ),
148
168
"%s %s %s\n" ,
149
- path_hdparm_cmd4_get_dco ,
169
+ path_hdparm_cmd40_get_dco ,
150
170
c -> device_name ,
151
171
pipe_std_err );
152
172
}
0 commit comments