You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
안녕하세요. Ch24 공부중 pata 디스크를 2개 연결하고 readsector 명령어을 조금 수정해서 사용하다가 발견하게됬습니다. 명령어에서 디스크를 직접 선택할 수 있도록 인자를 총 4개 (is_primary, is_master, LBA, count) 받게 했는데 ConsoleShell.c의 kGetNextParameter 함수 코드가 살짝 잘못 짜여진 것을 발견했습니다. kMemCpy의 인자가 잘못되어있더라고요. 아래 코드 comment에 부가설명을 넣었습니다.
Original Code
intkGetNextParameter( PARAMETERLIST*pstList, char*pcParameter )
{
inti;
intiLength;
if( pstList->iLength <= pstList->iCurrentPosition )
{
return0;
}
for( i=pstList->iCurrentPosition ; i<pstList->iLength ; i++ )
{
if( pstList->pcBuffer[ i ] ==' ' )
{
break;
}
}
// kMemCpy가 i 크기만큼 복사하는데 i가 parameter 길이보다 클 수가 있습니다.// 특히 명령어 인자가 3개 이상일 경우 3번째 인자만 가져야 할 pcParameter 변수가// 4번째 인자까지 가져가버리는 문제가 생깁니다. 그리고 4번째, 5번째... 그리고 (마지막 - 1)// 인자까지 같은 문제가 생기고요.kMemCpy( pcParameter, pstList->pcBuffer+pstList->iCurrentPosition, i );
iLength=i-pstList->iCurrentPosition;
pcParameter[ iLength ] ='\0';
pstList->iCurrentPosition+=iLength+1;
returniLength;
}
안녕하세요. Ch24 공부중 pata 디스크를 2개 연결하고 readsector 명령어을 조금 수정해서 사용하다가 발견하게됬습니다. 명령어에서 디스크를 직접 선택할 수 있도록 인자를 총 4개 (is_primary, is_master, LBA, count) 받게 했는데 ConsoleShell.c의 kGetNextParameter 함수 코드가 살짝 잘못 짜여진 것을 발견했습니다. kMemCpy의 인자가 잘못되어있더라고요. 아래 코드 comment에 부가설명을 넣었습니다.
Original Code
Suggested Code
혹시 괜찮다면 나중에 pull request를 넣어도 괜찮나요?
The text was updated successfully, but these errors were encountered: