- if (force_update || !strequal(printer->drivername, old_printer->drivername)) {
- push_reg_sz(tmp_ctx, &buffer, printer->drivername);
- winreg_set_printer_dataex(tmp_ctx, b,
+ if (printer->drivername != NULL &&
+ (force_update ||
+ !strequal(printer->drivername, old_printer->drivername))) {
+ ok = push_reg_sz(tmp_ctx, &buffer, printer->drivername);
+ if (!ok) {
+ DEBUG(0, ("%s data corrupted\n", SPOOL_REG_DRIVERNAME));
+ result = WERR_INVALID_DATA;
+ goto done;
+ }
+ result = winreg_set_printer_dataex(tmp_ctx, b,