Check for potential write error (or not buffer fully consumed)
This commit is contained in:
parent
e4bd73c03d
commit
c41dd46ca7
|
@ -931,14 +931,19 @@ namespace gourou
|
|||
void DRMProcessor::exportPrivateLicenseKey(std::string path)
|
||||
{
|
||||
int fd = open(path.c_str(), O_CREAT|O_TRUNC|O_WRONLY, S_IRWXU);
|
||||
int ret;
|
||||
|
||||
if (fd <= 0)
|
||||
EXCEPTION(GOUROU_FILE_ERROR, "Unable to open " << path);
|
||||
|
||||
ByteArray privateLicenseKey = ByteArray::fromBase64(user->getPrivateLicenseKey());
|
||||
/* In adobekey.py, we get base64 decoded data [26:] */
|
||||
write(fd, privateLicenseKey.data()+26, privateLicenseKey.length()-26);
|
||||
|
||||
ret = write(fd, privateLicenseKey.data()+26, privateLicenseKey.length()-26);
|
||||
close(fd);
|
||||
if (ret != privateLicenseKey.length()-26)
|
||||
{
|
||||
EXCEPTION(gourou::GOUROU_FILE_ERROR, "Error writing " << path);
|
||||
}
|
||||
}
|
||||
|
||||
int DRMProcessor::getLogLevel() {return (int)gourou::logLevel;}
|
||||
|
|
|
@ -99,7 +99,7 @@ void mkpath(const char *dir)
|
|||
void fileCopy(const char* in, const char* out)
|
||||
{
|
||||
char buffer[4096];
|
||||
int ret, fdIn, fdOut;
|
||||
int ret, ret2, fdIn, fdOut;
|
||||
|
||||
fdIn = open(in, O_RDONLY);
|
||||
|
||||
|
@ -119,7 +119,19 @@ void fileCopy(const char* in, const char* out)
|
|||
ret = ::read(fdIn, buffer, sizeof(buffer));
|
||||
if (ret <= 0)
|
||||
break;
|
||||
::write(fdOut, buffer, ret);
|
||||
do
|
||||
{
|
||||
ret2 = ::write(fdOut, buffer, ret);
|
||||
if (ret2 >= 0)
|
||||
{
|
||||
ret -= ret2;
|
||||
buffer += ret2;
|
||||
}
|
||||
else
|
||||
{
|
||||
EXCEPTION(gourou::CLIENT_FILE_ERROR, "Error writing " << out);
|
||||
}
|
||||
} while (ret);
|
||||
}
|
||||
|
||||
close (fdIn);
|
||||
|
|
Loading…
Reference in New Issue
Block a user