diff --git a/src/isnd/Services/PackageManager.cs b/src/isnd/Services/PackageManager.cs index abf0141..5cefdae 100644 --- a/src/isnd/Services/PackageManager.cs +++ b/src/isnd/Services/PackageManager.cs @@ -299,6 +299,8 @@ namespace isnd.Services && m.FullString == lower && (type == null || m.Type == type)); if (packageVersion == null) return null; if (packageVersion.Package.OwnerId != uid) return null; + dbContext.PackageVersions.Remove(packageVersion); + await dbContext.SaveChangesAsync(); return new PackageDeletionReport { Deleted = true, DeletedVersion = packageVersion }; } @@ -404,9 +406,9 @@ namespace isnd.Services var xMeta = XElement.Load(xmlReader, LoadOptions.None).Descendants().First(); - var xMetaElts = xMeta.Descendants(); + var xMetaElements = xMeta.Descendants(); - string description = xMetaElts.FirstOrDefault(x => x.Name.LocalName == "description")?.Value; + string description = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "description")?.Value; var dependencies = xMeta .Descendants().FirstOrDefault(x => x.Name.LocalName == "dependencies"); @@ -418,8 +420,10 @@ namespace isnd.Services .Select(x => NewFrameworkDependencyGroup(x)).ToArray(); // FIXME default package type or null var types = "Dependency"; - pkgId = xMetaElts.FirstOrDefault(x => x.Name.LocalName == "id")?.Value; - string pkgVersion = xMetaElts.FirstOrDefault(x => x.Name.LocalName == "version")?.Value; + pkgId = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "id")?.Value; + if (!Package.ValidateId(pkgId)) + throw new InvalidDataException(); + string pkgVersion = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "version")?.Value; if (!NuGetVersion.TryParse(pkgVersion, out nugetVersion)) throw new InvalidPackageException("metadata/version"); @@ -430,7 +434,7 @@ namespace isnd.Services string name = $"{pkgId}-{nugetVersion}." + Constants.PacketFileExtension; fullPath = Path.Combine(pkgPath, name); - var authors = xMetaElts.FirstOrDefault(x => x.Name.LocalName == "authors")?.Value; + var authors = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "authors")?.Value; var packageIdPathInfo = new DirectoryInfo(packageIdPath); Data.Packages.Package pkg = dbContext.Packages.SingleOrDefault(p => p.Id == pkgId);