if (view->dynamickeys != NULL) {
isc_result_t result;
- char template[20];
- char keyfile[20];
+ char template[PATH_MAX];
+ char keyfile[PATH_MAX];
FILE *fp = NULL;
- int n;
-
- n = snprintf(keyfile, sizeof(keyfile), "%s.tsigkeys",
- view->name);
- if (n > 0 && (size_t)n < sizeof(keyfile)) {
- result = isc_file_mktemplate(keyfile, template,
- sizeof(template));
- if (result == ISC_R_SUCCESS)
- (void)isc_file_openuniqueprivate(template, &fp);
+
+ result = isc_file_mktemplate(NULL, template, sizeof(template));
+ if (result == ISC_R_SUCCESS) {
+ (void)isc_file_openuniqueprivate(template, &fp);
}
- if (fp == NULL)
+ if (fp == NULL) {
dns_tsigkeyring_detach(&view->dynamickeys);
- else {
- result = dns_tsigkeyring_dumpanddetach(
- &view->dynamickeys, fp);
+ } else {
+ result = dns_tsigkeyring_dumpanddetach
+ (&view->dynamickeys, fp);
if (result == ISC_R_SUCCESS) {
- if (fclose(fp) == 0)
- result = isc_file_rename(template,
- keyfile);
+ if (fclose(fp) == 0) {
+ result = isc_file_sanitize
+ (NULL, view->name, "tsigkeys",
+ keyfile, sizeof(keyfile));
+ if (result == ISC_R_SUCCESS)
+ result = isc_file_rename
+ (template, keyfile);
+ }
if (result != ISC_R_SUCCESS)
(void)remove(template);
} else {
void
dns_view_restorekeyring(dns_view_t *view) {
FILE *fp;
- char keyfile[20];
- int n;
+ char keyfile[PATH_MAX];
+ isc_result_t result;
REQUIRE(DNS_VIEW_VALID(view));
if (view->dynamickeys != NULL) {
- n = snprintf(keyfile, sizeof(keyfile), "%s.tsigkeys",
- view->name);
- if (n > 0 && (size_t)n < sizeof(keyfile)) {
+ result = isc_file_sanitize(NULL, view->name, "tsigkeys",
+ keyfile, sizeof(keyfile));
+ if (result == ISC_R_SUCCESS) {
fp = fopen(keyfile, "r");
if (fp != NULL) {
dns_keyring_restore(view->dynamickeys, fp);